У меня есть сервер на базе Python, который я запускаю с терминала. Этот конкретный экземпляр терминала затем передает управление программе, и программа использует его как своего рода окно регистрации, пока оно не закроется. Это нормально, или я должен каким-то образом попытаться запустить программу каким-то другим способом, который будет просто отображаться как активный процесс? Если я закрываю терминал, с которого я запустил программу, программа умирает вместе с ним.
Спасибо
Даже старый 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
Вы также можете использовать:
start-stop-daemon -SbCv -x your_command
здесь есть сценарий init.d для запуска и остановки программы в фоновом режиме.
Из терминала вы также можете запустить screen
или выполнить команду с помощью &
. Простой способ запуска непрерывных процессов.
&
к фону процесс в этом случае к мало, по-моему. OP заявляет, что его журналы сервера к stdout так, с &
его терминал будет нарушен выводом. Также начиная с упоминаний OP закрытие терминала , OP не будет в состоянии к переднему плану, процесс снова и весь произведенный журналом будут потеряны. Лучше, по крайней мере, чтобы перенаправить его к файлу журнала или придерживаться с эти screen
установка - но тогда объясните основы screen
к OP (отсоединение/присоединение/и т.д.)
– Martin Joiner
02.02.2020, 16:26
$ servicename &
Использование &
приводит к тому, что программа запускается в фоновом режиме, а не блокирует оболочку, пока программа не завершится.
dixon@dixon-vaio:~$ nautilus & [1] 11835
. Это возвращает идентификатор процесса, и Вы будете новое приглашение оболочки. Также проверьте это: http://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and .
– Rahul Gupta
02.02.2020, 16:27