Intereting Posts
Как получить ls, чтобы перечислить каталоги с завершающим косой чертой? Отрегулируйте зазор между двумя столбцами, чтобы заставить их смотреть прямо Автоматический выход из корицы после периода простоя Загрузка процессора: пользователь, система, холостой ход всегда составляют до 100%? Bash часть строки без использования символов в кавычках Найти каталоги с определенным именем bash. Почему тип -a выполняет «$ (printf 'a')» и можно ли вернуть исходный псевдоним? выполнение 2 скриптов с подключением История-поиск в zsh работает только для команд? Ограничить вывод из непрерывного процесса Как расшифровать отдельные файлы Encrypt Encrypted? Не удалось загрузить содержимое веб-сайта Записывает ли `ln -sf` существующие файлы, которые являются только символическими ссылками SELinux не регистрируется нигде квоты, не связанные с пользователями, а с каталогами

Запуск нескольких скриптов в фоновом режиме и немедленный возврат

У меня есть эта настройка bash, настроенная для работы в тандеме с менеджером Wi-Fi, который предоставляет такие события, как HOTSPOT, CONNECTING, CONNECTED

Я хочу запускать сценарии, основанные на событиях, и немедленно возвращаться, а не ждать завершения сценариев, поскольку диспетчер Wi-Fi временно приостанавливает выполнение сценариев.

#!/bin/bash Logfile="/home/arjun/Desktop/bash/logfile.txt" echo "Started" >> $Logfile if [ "$1" == "CONNECTING" ]; then echo "args CONNECTING" >> $Logfile elif [ "$1" == "HOTSPOT" ]; then echo "args HOTSPOT" >> $Logfile kill $(> $Logfile nohup ~/Desktop/ruby/sinatra/api/api.rb >> /log/file 2>&1 & echo $! > my_sinatra_server.pid echo "PID is $(> $Logfile fi echo "bye:-)" >> $Logfile 

То, что у меня работает, работает правильно, но у меня также были бы другие скрипты для запуска, Python и скрипт Nodejs.

Как я могу добавить их. Это похоже на nohup для Ruby? Добавить новую строку nohup после этого для каждого сценария? Будут ли они вводить какие-либо задержки в передаче контроля?

И если я захочу передать это другому исполняемому файлу bash, это будет простой случай, когда вы скопируете все эти команды nohup в новый файл bash и сразу же вернете управление менеджеру Wifi? Будет ли это намного лучше? Как я могу это сделать тогда?

Это похоже на nohup для Ruby? Добавить новую строку nohup после этого для каждого сценария? Будут ли они вводить какие-либо задержки в передаче контроля?

Шаблон, который вы создали с помощью nohup за которым следует nohup команда и запись PID $! к файлу – типичный шаблон, который вы увидите, используемый для этого типа работы.

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

И если я захочу передать это другому исполняемому файлу bash, это будет простой случай, когда вы скопируете все эти команды nohup в новый файл bash и сразу же вернете управление менеджеру Wifi? Будет ли это намного лучше? Как я могу это сделать тогда?

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

С точки зрения того, как это сделать, кажется, что вы уже знаете, что делать. Поместите все в скрипт и вызывайте его из приложения WiFi manager.

Возможно, вам придется передать некоторые аргументы в этот скрипт. Для этого вы можете просто использовать вызов этого скрипта следующим образом:

 my_sub_cmd.bash $arg1 $arg2 

И затем внутри этой команды вы передаете аргументы командной строки через $1 , $2 и т. Д.