Как и в любом другом сценарии, вторая команда будет выполнена только после завершения первой. Вероятно, это не то, что вам нужно, когда первая команда должна работать почти вечно.
Если вы хотите, чтобы вторая команда выполнялась до завершения первой, и если вы хотите, чтобы сценарий завершился раньше, чем вторая команда завершена, вы должны настроить выполнение команд в фоновом режиме.
Итак, как минимум, вместо
my-first-command
my-second-command
вы хотите:
my-first-command &
my-second-command &
Однако лучше сделать что-нибудь посложнее, чем перевод команды в фоновый режим также помещает рабочий каталог команды в root файловой системы, отключает ввод команды с консоли, доставляет стандартный вывод и стандартные потоки ошибок в службу syslog
(которая обычно добавляет эти данные в /var/log/syslog
) и защищает его от непреднамеренных сигналов. Например:
( cd / && nohup sh -c 'my-first-command 2>&1 | logger -t my-first-command &' </dev/null >/dev/null 2>&1 )
и аналогично для второй команды.
Дополнительные перенаправления в конце строки должны предотвратить отправку nohup
нежелательных информационных сообщений и создание неиспользуемых nohup.out
файл. Вы можете оставить последний 2>&1
, пока не убедитесь, что остальная часть команды верна и ведет себя так, как вы хотите. Когда вы дойдете до точки, где отображается единственное сообщение nohup: redirecting stderr to stdout
, вы можете восстановить 2>&1
, чтобы избавиться от этого сообщения.