Запуск всех сценариев в папке в фоновом режиме

Я хочу одновременно запускать все сценарии в каталоге.

Я знаю, что могу получить список всех скриптов и выполнить первый в каталоге с помощью `ls ./*. Sh`, но я не могу заставить их всех запускать.

Я также попытался расширить брекет {./*.sh; }, но также был запущен только первый скрипт.

После того, как я выясню, как запустить все из них, я хочу запустить их все в фоновом режиме.

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

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

5 Solutions collect form web for “Запуск всех сценариев в папке в фоновом режиме”

for script in ./*.sh; do "$script" & done wait 

Или ограничить количество одновременных вызовов с помощью GNU xargs :

 xargs -n1 -P5 -r0a <(printf '%s\0' ./*.sh) env 

(будьте осторожны, предполагается, что имена сценариев не содержат = символов).

Или с zsh :

 autoload zargs # best in ~/.zshrc zargs -n1 -P5 ./*.sh -- command 

(здесь не более 5 за раз).

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

 parallel -j0 exec ::: ./*.sh 

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

вы можете выполнить все скрипты в папке, передав папку команде run-parts :

 run-parts /path/to/folder & 

Запустите каждый сценарий оболочки в фоновом режиме.

 sh -x script1.sh & sh -x script2.sh & sh -x script3.sh & 
  • Запускайте каждый сценарий в фоновом режиме, чтобы запускалась следующая команда, не дожидаясь завершения текущей команды.

  • '&' заставляет скрипты работать в фоновом режиме, чтобы приглашение не дождалось завершения

Вы можете запустить любой исполняемый файл в фоновом режиме, добавив & до конца вызова. Пример:

 ./executbaleFile [args] & 

Но когда вы просто это сделаете, если вы закроете сеанс или выйдете из терминала, он отправит SIGHUP в процесс, который вы используете.

Если вы хотите, чтобы процесс продолжал работать, даже если вы закрываете терминал, вы должны выполнить команду nohup . например:

 nohup ./executbaleFile [args] & 

это позволит процессу работать даже после закрытия терминала.

Или используйте disown ., Он удаляет задание из списка заданий оболочки, поэтому при завершении оболочки он не отправляет SIGHUP в процесс.

Запустите сценарии в фоновом режиме:

 ./myscript.sh & ./myscript2.sh & .... 
  • Как понять вывод трассировки, выполняющей внешнюю команду в фоновом режиме через strace
  • «Nohup sudo ...» не запрашивает passwd и ничего не делает
  • Запуск нескольких команд nohup в фоновом режиме
  • Как запустить процесс для пользователя, когда он входит в систему и завершается, когда закрывается его последняя сессия?
  • Как мне выполнить фоновое представление / возвращение раньше?
  • Как создать цепочку команд?
  • Подождите несколько процессов, распечатайте код выхода, если какой-либо процесс завершит работу
  • Как передать поток ffmpeg в отдельный процесс
  • Как отправить команду в фоновый режим с помощью ssh на удаленной системе
  • Учитывая две фоновые команды, завершите оставшуюся, когда либо выйдет
  • В чем разница между тем, чтобы nohup не добавлял «nohup.out» и явно перенаправлял его в файл?
  • Выполнение нескольких функций bash в фоновом режиме и ожидание, пока они не вернутся
  • Linux и Unix - лучшая ОС в мире.