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