Похожие вопросы

Как удалить все файлы, начинающиеся с определенной строки в Linux
"read" работает как ожидалось в ZSH, но ведет себя по-другому при использовании любой другой оболочки
Удалить OSX spotlight сочетание клавиш из командной строки
Bash Изменить Размер Терминала Xterm
Как изменить цвет конкретного типа файла в оболочке bash в linux?
Копировать всех пользователей.история bash на одном дыхании
Как командная строка Mac сравнивается с Linux?
Настройка $PATH в /etc / profile не влияет на root
Bash: отображение каждого размера подкаталога в формате списка с помощью команды 1 строка?
Хрон на Mac не работает во время сна
Как использовать терминал для входа на другой компьютер mac?
Сценарий Bash, чередование символов новой строки в переменной
OS-X терминал ведет себя странно после запуска Python в интерактивном режиме
Проблема с передачей файла из linux в windows с помощью smbclient
Создание сценария BASH " для " обрабатывать имена файлов с пробелами (или обходной путь)

BASH: асинхронное выполнение команд с задержкой

эффективно то, что я пытаюсь выполнить, заключается в следующем, где cmd1 занимает некоторое время для запуска (~1 минута), а cmd2 возвращается почти мгновенно при каждом запуске:

  1. cmd1 начинается
  2. подождите немного (~10 секунд)
  3. cmd2 выполняется
  4. подождите еще немного
  5. cmd2 снова работает
  6. проходит какое-то время
  7. cmd1 заканчивается

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

Как я могу это сделать?

5
задан Mala
источник

1 ответов

cmd1 &
cmd1_pid=$!
sleep 10
cmd2
sleep 10
cmd2
wait $cmd1_pid

объяснение: cmd1 & запускает процесс в фоновом режиме оболочки. the $! переменная содержит pid этого фонового процесса. оболочка продолжает обрабатывать другие cmds. sleep 10 означает 'подождите немного'. ОП просто хочет уволить cmd2 в линейном порядке, так что часть тривиальна. в конце фрагмента скрипта мы просто ждем cmd1 до конца (возможно, даже раньше) с wait $cmd1_pid.

7
отвечен akira 2013-12-19 09:21:30
источник

Другие вопросы bash delay