Como executar serviços interdependentes no Linux consecutivamente?

0

Eu quero executar o comando FsciBootloader / dev / ttymxc5 /home/root/GwRadioFirmware/KW41Z/KW41Z-hostcontrol-serial-upgrade-v2.0.5.bin quando o sistema for iniciado pela primeira vez. Este comando pisca outro dispositivo através dos dados UART. Eu preciso executar o seguinte comando de acordo com o sucesso desta transferência de dados (flash).

/ usr / bin / ThreadDeviceMgr / dev / ttymxc5 fslthr0 0.

Para isso, criei primeiro um arquivo bash no caminho / etc / file e adicionei

#! / Bin / bash
echo "stuttering is starting ...."
FsciBootloader / dev / ttymxc5 /home/root/GwRadioFirmware/KW41Z/KW41Z-hostcontrol-serial-upgrade-v2.0.5.bin
echo "write completed ...." 

Eu escrevi os comandos.

Em seguida, criei um script de serviço no caminho do arquivo / lib / systemd / system e escrevi os seguintes comandos.

[Unit]
Description=Thread network manager
After=gateway-config.service

[Service]
Type=simple
ExecStart=/etc/flashTTT.sh

[Install]
WantedBy=multi-user.target

Em seguida, criei um segundo arquivo de serviço e neste arquivo de serviço eu quero executar o seguinte comando de acordo com o resultado do comando no primeiro arquivo de serviço e concluir a operação.

[Unit]
Description=Thread network manager
After=thread-write.service

[Service]
Type=simple
ExecStart=/usr/bin/ThreadDeviceMgr /dev/ttymxc5 fslthr0 tap 0

[Install]
WantedBy=multi-user.target
  1. As etapas que implementei estão corretas?
  2. Como posso saber que o processo de flash é bem sucedido?
  3. Se eu executar os serviços de acordo com as etapas acima, o segundo serviço não inicia após o flash e recebo o seguinte erro.

         ● thread-control.service - Thread network manager
       Loaded: loaded (/lib/systemd/system/thread-control.service; enabled; vendor preset: enabled)
       Active: failed (Result: signal) since Wed 2018-05-09 07:15:35 UTC; 9min ago
      Process: 392 ExecStart=/usr/bin/ThreadDeviceMgr /dev/ttymxc5 fslthr0 tap 0 (code=killed, signal=SEGV)
     Main PID: 392 (code=killed, signal=SEGV) May 09 07:15:32 imx6ulmg ThreadDeviceMgr[392]: RTNETLINK answers: File exists
    May 09 07:15:32 imx6ulmg ThreadDeviceMgr[392]: RTNETLINK answers: File exists
    May 09 07:15:32 imx6ulmg ThreadDeviceMgr[392]: net.ipv6.conf.all.forwarding = 1
    May 09 07:15:32 imx6ulmg /usr/bin/ThreadDeviceMgr[392]: main:3340: Software Version : 1.7.26
    May 09 07:15:32 imx6ulmg /usr/bin/ThreadDeviceMgr[392]: TUNAlloc:3179: Entered : TUNAlloc
    May 09 07:15:32 imx6ulmg /usr/bin/ThreadDeviceMgr[392]: TUNAlloc:3229: Exited : TUNAlloc
    May 09 07:15:32 imx6ulmg /usr/bin/ThreadDeviceMgr[392]: Provision:2852: Entered : Provision
    May 09 07:15:35 imx6ulmg systemd[1]: thread-control.service: Main process exited, code=killed, status=11/SEGV
    May 09 07:15:35 imx6ulmg systemd[1]: thread-control.service: Unit entered failed state.
    May 09 07:15:35 imx6ulmg systemd[1]: thread-control.service: Failed with result 'signal'.
    
por Zafer M. ŞEN 09.05.2018 / 09:36

0 respostas