写守护我有一个由跑了.py文件:蟒蛇:如何在Linux的
蟒蛇a.py &
我使用的是ssh来运行命令,之后我有注销。过了一段时间后,我发现退出了这个过程。我怀疑这是Linux向它发送一些信号?我想如果我可以制作守护进程,那么我可以避免这种情况?
写守护我有一个由跑了.py文件:蟒蛇:如何在Linux的
蟒蛇a.py &
我使用的是ssh来运行命令,之后我有注销。过了一段时间后,我发现退出了这个过程。我怀疑这是Linux向它发送一些信号?我想如果我可以制作守护进程,那么我可以避免这种情况?
虽然nohup的将工作,这是一个快速和肮脏的解决方案。要创建一个适当的守护进程,你需要使用SysV init或者(如果你运行的是Ubuntu 6.10+或者Fedora 9+)暴发户。
这里有一个简单的脚本开始a.py并重新启动它时,它就会被杀死(5次5分钟内跨度):
respawn
respawn limit 5 300
exec python /path/to/a.py
然后,只需把该脚本/etc/init/
。
Upstart还有很多选择。检查Quick Start教程。
与“nohup的”运行它忽略的信号时,你的shell退出:
nohup python a.py &
我从布莱恩梆子非常满意daemonize.py
,基于FreeBSD的daemon(1)
:
http://software.clapper.org/daemonize/
http://github.com/bmc/daemonize
自2009年1月有PEP 3143其中包含指向参考实现,设计目标,引用的链接ns(史蒂文斯)等来源。
您也可以使用屏幕实用程序,允许您在单个终端窗口或远程终端会话内访问多个单独的终端会话。
这意味着您可以设置一个屏幕会话(使用您选择的名称),在其中启动一个程序(例如使用&),从会话中分离并稍后重新连接。
启动未命名的屏幕。
$ screen
要具有特定名称使用创建一个新的会话:
$ screen -S backup
- 这些都命令创建一个新的持久的会话,你可以使用它作为一个普通的终端窗口,即发出指令并运行脚本。
如果你想离开会话而不终止它,使用:
Ctrl+a d command (press and hold Ctrl, press and hold a, then press d) to detach from the session.
要查看runnging屏幕的列表:
$ screen -ls
到正在运行的屏幕连接到控制台:
$ screen -R
当屏幕正在运行时,可以使用以下键组合,并将其连接到控制台。所有关键组合开始于按压控制和同时开始。
ctrl+a d - detach the screen, and let it run without user interface (as described above)
ctrl+a c - create a new terminal
ctrl+a A - set the name of the current terminal
ctrl+a n - switch to next terminal
ctrl+a p - switch to prev terminal
ctrl+a " - list the of terminals