rc.local, chame os comandos sequencialmente (um depois de terminar o outro)

1

Eu esperava que em rc.local , Se eu dissesse que chamo o programa P1 em uma linha e, em seguida, P2 na linha seguinte, P2 seria executado somente após P1 (do qual depende execução bem sucedida). Esse é o comportamento em scripts bash. No entanto, após inicializar minha máquina, P2 não foi concluído. Então, meu palpite é que todos os comandos escritos em rc.local são executados em paralelo e P1 não foi concluído antes da execução de P2 . Eu acho que esse comportamento faz sentido para daemons ...

Se estiver em paralelo, posso resolver isso usando o operador && ou criando um script de wrapper. Ainda assim, gostaria de confirmar o comportamento:

Em rc.local , os comandos em novas linhas são executados sequencialmente ou em paralelo?

    
por juanmirocks 10.10.2014 / 18:47

1 resposta

2

As linhas de rc.local não são executadas em paralelo. Ele será executado na mesma ordem que qualquer outro script bash.

Não adivinhe por que P2 não foi executado, descubra com certeza registrando sua saída. Por exemplo:

P1 > /tmp/P1.startup 2>&1
P2 > /tmp/P2.startup 2>&1

Se P1 tiver que ser concluído com êxito antes que P2 seja executado, você precisará definir uma declaração if true. Um deles funcionará:

P1 && \
P2

Ou

P1
test $? -eq 0 && P2

Ou

P1
if [[ $? == 0 ]]
then
  P2
fi
    
por 10.10.2014 / 18:57

Tags