rc.local, вызывайте команды последовательно (одна после другой)

Я ожидал, что в rc.local, Если сказать, я называю программу P1 в одну строку, а затем P2 в следующей строке, P2 будет выполняться только после P1 (от которого зависит успешное исполнение). Это поведение в скриптах bash. Тем не менее, после загрузки моей машины, P2 не было завершено. Так что я думаю, что все команды, написанные на rc.local работают параллельно и P1 не закончил до казни P2, Я думаю, что это поведение имеет смысл для демонов...

Если это параллельно, я мог бы просто решить это с помощью && оператор или создание сценария оболочки. Тем не менее, я хотел бы подтвердить поведение:

В rc.local Команды в новых строках выполняются последовательно или параллельно?

1 ответ

Решение

Линии из rc.local не выполняются параллельно. Он будет выполнен в том же порядке, что и любой другой скрипт bash.

Не угадай почему P2 не запускался, узнайте наверняка, зарегистрировав его вывод. Например:

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

Если P1 должен успешно завершить, прежде чем P2 запускается, вам нужно будет установить выражение if true. Один из них будет работать:

P1 && \
P2

Или же

P1
test $? -eq 0 && P2

Или же

P1
if [[ $? == 0 ]]
then
  P2
fi
Другие вопросы по тегам