Как выполнить несколько команд в bash, некоторые в фоновом режиме

Я хотел бы выполнить несколько команд в bash, но некоторые из них выполняются в фоновом режиме. Лучший способ объяснить это-использовать следующую команду, которая не работает...

for@barpc:~> (sleep 30;command1;command2 param ) & ; anotherCommand

Я думаю, это можно рассматривать как два вопроса:

  1. как завершить & в команде?
  2. что было бы лучшим способом сделать это?

другие детали, если они имеют значение:

  • Opensuse 13.2
  • gnome-shell
5
задан JakeGould
источник

2 ответов

вы должны попробовать

(sleep 5; ls) &  echo "Now"

это работает так, как вы хотите.

3
отвечен MariusMatutiae 2015-09-27 07:48:22
источник

все, что вам нужно сделать, это удалить ;. & действует как разделитель команд сам по себе, поэтому добавлять ; после этого недопустимо.

(sleep 30; command1; command2 param ) & anotherCommand

(пробелы после точки с запятой не нужны, я просто легче читать таким образом. Это одно из немногих мест, где пробелы необязательны в синтаксисе оболочки-в большинстве мест они либо обязательны, либо запрещены.)

что касается лучших способов сделать это... это действительно зависит от того, что вы пытаетесь сделать. Нам понадобится больше информации, чтобы сделать лучшие предложения.

4
отвечен Gordon Davisson 2015-09-26 18:43:18
источник

Другие вопросы bash command-line linux linux-terminal