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

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

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

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

1
задан 10 October 2014 в 19:47
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
2
ответ дан 3 December 2019 в 21:12

Теги

Похожие вопросы