我有Python脚本bgservice.py
,我希望它一直运行,因为它是我构建的Web服务的一部分.即使在我注销SSH后,如何让它连续运行?
运行nohup python bgservice.py &
以使脚本忽略挂断信号并继续运行.输出将被输入nohup.out
.
理想情况下,您可以使用类似的方式运行脚本,supervise
以便在(何时)它死亡时重新启动它.
如果你已经开始了这个过程,并且不想杀死它并在nohup下重启,你可以将它发送到后台,然后将其取消.
Ctrl+Z
(暂停过程)
bg
(在后台重启该过程
disown %1
(假设这是作业#1,用于jobs
确定)
您也可以使用几乎每个Linux/Unix系统都应该具有的GNU屏幕.
如果你使用的是Ubuntu/Debian,它的增强版本byobu也相当不错.
描述你可能会考虑把您的Python脚本到合适的蟒蛇守护,这里.
python-daemon是一个很好的工具,可以用来运行python脚本作为后台守护进程而不是永远运行的脚本.您需要稍微修改现有代码,但其简单明了.
如果您遇到python-daemon的问题,还有另一个实用程序管理器会为您执行相同操作,但在这种情况下,您不必编写任何代码(或修改现有代码),因为这是一个开箱即用的daemonizing解决方案流程.
你可以没有它,但我更喜欢屏幕.
这是一个使用装饰器在python中的简单解决方案:
import os, time def daemon(func): def wrapper(*args, **kwargs): if os.fork(): return func(*args, **kwargs) os._exit(os.EX_OK) return wrapper @daemon def my_func(count=10): for i in range(0,count): print('parent pid: %d' % os.getppid()) time.sleep(1) my_func(count=10) #still in parent thread time.sleep(2) #after 2 seconds the function my_func lives on is own
您当然可以替换bgservice.py
文件的内容my_func
.