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

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

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

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

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

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

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

  • OpenSuse 13.2
  • гном-shell

решение1

Тебе стоит попробовать

(sleep 5; ls) &  echo "Now"

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

решение2

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

(sleep 30; command1; command2 param ) & anotherCommand

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

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

Связанный контент