我有Python脚本bgservice.py
,我希望它一直运行,因为它是我构建的Web服务的一部分。即使在注销SSH之后,我如何才能使其继续运行?如何在注销SSH后在后台运行Python脚本?
回答
运行nohup python bgservice.py &
让脚本忽略挂断信号并继续运行。输出将被放入nohup.out
。
理想情况下,您可以运行类似supervise
的脚本,以便在它死亡时重新启动它。
你可以禁不住,但我更喜欢screen。
你也可以使用几乎每个Linux/Unix系统都应该有的GNU screen。
如果您在Ubuntu/Debian上,其增强版本byobu也不错。
谢谢,你做了我的一天:显然是自从切片面包改良后的最好的事情。 – 2010-06-04 15:45:26
这也是我使用的完全相同的定义:)那么,我们称之为什么?切片_和烤面包? ;-) – 2010-06-04 16:18:58
切片,烤,然后在啤酒面糊深炸。 – DataMania 2017-08-17 05:52:08
zsh shell有一个选项可以使所有后台进程都以nohup运行。
在~/.zshrc
添加行:
setopt nocheckjobs #don't warn about bg processes on exit
setopt nohup #don't kill bg processes on exit
然后你只需要运行一个过程,像这样:python bgservice.py &
,您不再需要使用nohup命令。
我知道没有多少人使用zsh,但它是一个非常酷的shell,我会推荐。
如果您已经启动了该进程,并且不想在nohup下重新启动并重新启动,则可以将其发送到后台,然后拒绝它。
Ctrl+Z
(暂停过程)
bg
(重新启动在后台
disown %1
过程中(假设这是工作#1,使用jobs
确定)
你可能会考虑把您的蟒蛇脚本合成一个合适的python守护进程,如here所示。
python-daemon是一个很好的工具,可以是你的sed运行python脚本作为后台守护进程而不是永远运行的脚本。您需要稍微修改现有的代码,但它很简单。
如果您在使用python-daemon时遇到问题,还有另一个实用程序supervisor也会为您执行相同的操作,但在这种情况下,您不必编写任何代码(或修改现有代码),因为这是超出用于守护程序。
给出一个关于如何解决问题的简要说明通常是一个好主意。 – 2016-10-08 12:25:01
如果您需要的是无论您是否登录,进程都应该永远运行,请考虑将该进程作为守护进程运行。
supervisord是一个很好的开箱即用的解决方案,可用于守护任何进程。它有另一个控制实用程序supervisorctl
,可用于监视由主管运行的进程。
您不必编写任何额外的代码或修改现有的脚本来完成此工作。而且,详细的文档使得这个过程更加简单。
在python-daemon周围困扰着我的头几个小时后,主管是在几分钟内为我工作的解决方案。
希望这有助于有人试图让蟒蛇守护工作
下面是一个使用装饰内部蟒蛇一个简单的解决方案:
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
。
- 1. 如何在运行后在后台启动python脚本?
- 2. 如何在注销后让Perl脚本在Unix上运行?
- 3. 在后台运行Python脚本
- 4. 在后台运行python脚本
- 5. Python脚本一直在后台运行
- 6. 在后台运行脚本?
- 7. 在后台运行脚本
- 8. 如何在后台运行php脚本?
- 9. 如何让脚本在后台运行
- 10. 如何强制在Linux上在后台运行Python脚本
- 11. 在SSH之后运行脚本命令
- 12. 通过SSH运行后台服务的Python脚本
- 13. 在后台运行前台ksh脚本
- 14. 如何在ubuntu后台运行python脚本?
- 15. 如何在计划的后台运行我的python脚本?
- 16. 如何在Windows后台运行python脚本?
- 17. ssh在后台运行脚本并获得其pid
- 18. 超级脚本在后台运行ssh命令
- 19. 通过SSH在后台执行远程python脚本
- 20. 如何在终止ssh后继续在Raspberry Pi的后台运行Python程序
- 21. 如何让Python脚本在执行后运行powershell脚本
- 22. 在后台运行PHP脚本
- 23. Java:在后台运行shell脚本
- 24. 在后台运行Ruby脚本
- 25. 在后台自动运行bash脚本
- 26. 在后台运行一个php脚本
- 27. 在后台运行php脚本centos server
- 28. PHP - 在后台运行脚本
- 29. 在nginx的后台运行php脚本
- 30. PHP在后台运行脚本
当我用nohup和&运行命令时,我得到消息'nohup:忽略 把输出附加到'nohup.out'' ,当我按下输入进程时退出状态为1.发生了什么事? – 2013-12-07 15:03:33
读取nohup.out中的输出。在我的情况下,这是一个权限问题,我需要使用sudo – mxns 2014-05-06 05:46:00
以及如何在此方法中运行后停止bgservice? – Shaegorath 2018-02-08 10:16:59