Как можно запустить несколько программ в фоновом режиме с помощью одной команды?
Я попробовал команды ниже, но они не работают.
nohup ./script1.sh & && nohup ./script2.sh &
-bash: syntax error near unexpected token '&&'
nohup ./script1.sh & ; nohup ./script2.sh &
-bash: syntax error near unexpected token ';'
bash
shell-script
Рахул Патил
источник
источник
Ответы:
С точки зрения синтаксиса оболочки,
&
отделяет команды вроде;
/|
/&&
... (хотя, конечно, с другой семантикой). Так что это просто:источник
;
запускает следующую команду, как только заканчивается первая.&
на самом деле ставит команду на задний план. просто попробуйте это:echo foo & echo bar & echo test &
sudo
вы можете ввести пароль только один раз, затем обернуть егоbash -c
или аналогичный.Раздел руководства bash под названием Составные команды имеет две опции: команды list и group.
Групповая команда - это серия команд, заключенных в фигурные скобки
{}
. Список такой же, заключенный в скобки()
. И то, и другое можно использовать для фона нескольких команд внутри и, наконец, для фона всей коллекции в виде набора. Конструкция списка выполняет команды в подоболочке, поэтому назначение переменных не сохраняется.Чтобы выполнить группу команд:
Вы также можете выполнить свои команды в списке (подоболочке):
источник
()
синтаксис списка выполняет вложенные команды в подоболочке, поэтому переменные не сохраняются внутри.по-другому:
источник
&&
в своем вопросе, это означает, что сначала запустите команду, затем, если она выполнена успешно, запустите следующую команду. Если вы ее не считаете, вы можете запуститьcommand1 & ; command2 & ;
;
без проблем с этим