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

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

Я знаю, что могу получить список всех скриптов и выполнить первый в каталоге с помощью `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 & .... 
  • Хранить stdout в переменной и отправлять команду на фоновый
  • есть что-то вроде демона для каждого пользователя?
  • GNU parallel vs & (я имею в виду фон) vs xargs -P
  • У вас есть сценарий bash для ожидания пароля
  • Выполнять удаленные команды, полностью отсоединяясь от ssh-соединения
  • Запуск приложения GUI в фоновом режиме и последующее повторное подключение
  • запустить удаленный процесс через autossh в фоновом режиме
  • Убивание предыдущих экземпляров скрипта перед запуском того же сценария Unix
  • Почему функция не возвращается, пока фоновый процесс не завершится?
  • Запуск скомпилированной программы на C ++ в фоновом режиме и отправка ввода при необходимости
  • Вывод команды захвата в течение n секунд, затем отсоедините ее (запустите в фоновом режиме)
  • Linux и Unix - лучшая ОС в мире.