奇怪的问题在这里,但我正在玩我的Linux服务器上的Python聊天服务器/客户端组合。 目前,如果我这样做:
$: cd /path/to/chat/server $: sudo python ChatServer_Listen.py
这将启动python应用程序运行循环,服务器将侦听传入的TCP连接。
我的问题是,如果我closures我的terminal窗口,ssh会话退出,python应用程序停止运行,客户端不能再连接。 我宁愿不在本地24/7运行一个terminal实例。 我可以将这个python应用程序设置为可以在Linux的后台运行吗? 如果是这样,怎么样? 理想情况下,它就像Apache一样只是作为服务运行。
谢谢你的协助!
你可以使用nohup python ChatServer_Listen.py &
nohup会将您的程序输出logging到nohup.out文件中。
要停止你的程序,你必须使用kill your_pid命令。
你想使用主pipe 。 它完全是为了这个目的,再加上它会做一些事情,如重新启动进程,如果它死了,提供一个基于Web的GUI来控制它,等等。
注销后保持进程的简单方法是使用屏幕 。
就像这里解释的:
https://stackoverflow.com/questions/625409/how-do-i-put-an-already-running-process-under-nohup
“
使用bash的Job Control将进程发送到后台:
[CRTL] + Z
BG
正如Sam / Jan提到的,你必须执行disown以避免在closuresterminal之后终止进程。
否认-h
“
正确的方法是更改代码以正确地守护进程。 一种方法是使用daeminize模块。
这样做的权宜之计,也适用于你无法修改的软件,就是像这样启动它
nohup python ChatServer_Listen.py >logfile.txt 2>&1 </dev/null &
请注意,我没有使用sudo 。 那是因为你应该把上面的行放在一个shell脚本中,并用sudo运行shell脚本。