Назад | Перейти на главную страницу

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

Я ожидал этого в 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