Ответ 1
Простые/полезные вещи сначала
Если вы хотите запустить script без особых усилий, вы можете использовать службу upstart
. См. Соответствующую страницу руководства и /etc/init/*.conf
. После создания такого процесса
вы можете запустить свой сервер, позвонив
service myserver start
Если вам нужны другие функции, например, определенные ограничения или управление разрешениями, вы можете попробовать xinetd
.
Использование оболочки
Вы можете начать свой процесс следующим образом:
nohup ./myexecutable &
&
указывает командам запускать команду в фоновом режиме, сохраняя ее в списке заданий.
На некоторых оболочках задание убивается, если родительская оболочка выходит с использованием сигнала HANGUP.
Чтобы предотвратить это, вы можете запустить свою команду, используя команду nohup
, которая отбрасывает сигнал HANGUP.
Однако это не работает, если вызываемый процесс повторно подключает сигнал HANGUP.
Чтобы быть уверенным, вам нужно удалить этот процесс из списка заданий оболочки. Для двух хорошо известных оболочек это может быть достигнуто следующим образом:
bash:
./myexecutable &
disown <pid>
ЗШ:
./myexecutable &!
Устранение фонового задания
Обычно оболочка печатает PID процесса, который затем может быть убит с помощью команды kill
, чтобы остановить сервер. Если ваша оболочка не печатает PID, вы можете получить ее с помощью
echo $!
непосредственно после выполнения. Это печатает PID разветвленного процесса.