在linux的后台运行python应用程序

奇怪的问题在这里,但我正在玩我的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脚本。