日期:2014-05-16  浏览次数:20771 次

SecureCRT 上执行的 python 程序如何能在关闭终端时继续执行?
我用   SecureCRT   管理   linux   服务器,在终端上执行了一个   python   程序,是一个   web   服务器。但是我关闭   SecureCRT   后,该程序也终止了,有什么办法可以让他继续运行呢?

还有,如果实现了这一点,我下次登录上假如想重启该程序,用什么办法?如何找到上次启动的那个进程?


------解决方案--------------------
你的 程序不是守护进程吗?
最好把它写成守护进程的形式,这样可以作为服务启动,与用户登陆与否无关。
------解决方案--------------------
运行时在后面加个 & 符号
------解决方案--------------------
最好的方法正如 huailairen 所说,最好把它写成守护进程的形式

不过,也可以采用 sysheng01 所说的方法,使用
path_to_exe &
使程序在后台运行,这样退出 shell 的时候一般来说它不会结束

命令 jobs 可以查看正在(前台和后台)运行的任务,详见 man jobs

bg [jobspec] 可以把任务放到后台,
fg [jobspec] 可以把任务放到前台,详见 man bash 里面相关的部分
------解决方案--------------------
python /home/neil/www/test/manage.py runserver 0.0.0.0:8888 &
执行这个后,服务已经运行了吗?

如果运行了,你退出是不会有影响的。
------解决方案--------------------
我的感觉是,虽然后台执行了,但因为这个程序是一个 web 服务器。他随即又进入了提示符状态,显示 web 访问记录。
然后我关闭终端的话,用 IE 测试服务器上的 web 服务,立马就停止了。

------------------------------
还是加&在命令最后, "他随即又进入了提示符状态 ",回车,确保出现系统提示符!!! 然后输入exit命令,关闭SecureCRT窗口。


------解决方案--------------------
只加&是不够的,终端退出时会向所有进程发SIGHUP信号

SIGHUP 1 Term Hangup detected on controlling terminal
or death of controlling process
这样可以
nohup python ... &