У меня есть сервер на базе Python, который я запускаю с терминала. Этот конкретный экземпляр терминала затем передает управление программе, и программа использует его как своего рода окно регистрации, пока оно не закроется. Это нормально, или я должен каким-то образом попытаться запустить программу каким-то другим способом, который будет просто отображаться как активный процесс? Если я закрываю терминал, с которого я запустил программу, программа умирает вместе с ним.
Спасибо
$ servicename &
Использование &
приводит к тому, что программа запускается в фоновом режиме, а не блокирует оболочку, пока программа не завершится.
Преврати его в демона (службу)
daemon --name="yourservicename" --output=log.txt sh yourscript.sh
Даже старый bash использует & amp; для отправки процессов в фоновый режим, но есть и несколько других способов ... но есть два основных:
1.)$~ your_command > outputfile_for_stdout &
# runs your command in background, giving you only PID so you can exit that process by `kill -9 PID_of_process`
# & goes at the end of row
2.)$~ your_command > outputfile_for_stdout
# this will run your program normally
# press Ctrl + Z then program will pause
$~ bg
# now your program is running in background
$~ fg
# now your program came back to foreground
3.)you can run terminal window under screen command so it will live until you either kill it or you reboot your machine
$~ screen
$~ run_all_your_commands
# Ctrl + A + D will then detach this screen
$~ screen -r will reattach it
Некоторые другие полезные команды:
$~ jobs
# will show you all processes running right now, but without PID
$~ ps
# will show you all processes for actual terminal window
Из терминала вы также можете запустить screen
или выполнить команду с помощью &
. Простой способ запуска непрерывных процессов.
Вы также можете использовать:
start-stop-daemon -SbCv -x your_command
здесь есть сценарий init.d для запуска и остановки программы в фоновом режиме.