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 ... &