Я ожидал этого в rc.local
, Если сказать, что я вызываю программу P1
в одну строку, а затем P2
в следующей строке P2
будет выполнено только после P1
(от чего зависит успешное выполнение). Это поведение в сценариях bash. Однако после загрузки моей машины P2
не был завершен. Итак, я предполагаю, что все команды, написанные на rc.local
работают параллельно и P1
не закончил до исполнения P2
. Думаю, такое поведение имеет смысл для демонов ...
Если это параллельно, я мог бы просто решить эту проблему, используя &&
оператор или создание сценария-оболочки. Тем не менее, я хотел бы подтвердить поведение:
В rc.local
, команды в новых строках выполняются последовательно или параллельно?
Линии из 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