Как выполнить несколько команд в Bash, некоторые в фоновом режиме
Я хотел бы выполнить несколько команд в bash, но некоторые из них выполняются в фоновом режиме. Лучший способ объяснить это - использовать следующую команду, которая не работает...
for@barpc:~> (sleep 30;command1;command2 param ) & ; anotherCommand
Я полагаю, это можно принять за два вопроса:
- Как прекратить & в команде?
- Что может быть лучше для этого?
Другие детали, если они имеют значение:
- Opensuse 13.2
- гном-оболочки
2 ответа
Тебе стоит попробовать
(sleep 5; ls) & echo "Now"
Это работает так, как вы хотите.
Все, что вам нужно сделать, это удалить ;
, &
действует как разделитель команд, поэтому добавление ;
после этого недействителен.
(sleep 30; command1; command2 param ) & anotherCommand
(Пробелы после точек с запятой не нужны, просто мне проще читать таким образом. Это одно из немногих мест, где пробелы являются необязательными в синтаксисе оболочки - в большинстве мест они либо обязательны, либо запрещены.)
Что касается лучших способов сделать это... это действительно зависит от того, что именно вы пытаетесь сделать. Нам нужно больше информации, чтобы сделать лучшие предложения.