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