我有一个处理HTTP数据流数据的Python脚本,理论上我需要这个脚本一直在运行,除非我手动将其删除以更新它并再次运行。
我想知道这样做的最佳做法是在Unix(特别是Ubuntu)上,这样即使终端关闭等,除非进程或服务器关闭,否则脚本会继续在后台运行?
谢谢
答案 0 :(得分:11)
从您的问题中,您暗示您将从终端启动脚本,而不是通过Linux的任何启动脚本管理方法(如systemd或upstart或init.d脚本)启动脚本。
如果您打算从终端启动脚本,并且希望在关闭终端后继续运行脚本,则需要执行两项操作
1.通过附加'&'使其在后台运行。在你的脚本之后。
2.关闭终端时,与之关联的shell会在死亡前向所有进程发送HUP信号。要忽略HUP信号并继续在后台运行,您需要使用' nohup'启动脚本。
TL;博士的
以这种方式运行脚本:
$ nohup python mypythonscript.py &
答案 1 :(得分:6)
将您的脚本添加到rc.local会有效,但我认为“最佳做法”是使用Upstart。看这篇文章:
答案 2 :(得分:3)
这是一个无限循环。您可以在启动时启动脚本,它将永久运行,直到您自己终止进程或关闭计算机。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
while True:
print 'Hello'
time.sleep(2) # 2 second delay
答案 3 :(得分:1)
我不确定"最佳实践"这是你可以做的:
将程序添加到: /etc/rc.d/rc.local中
这将使程序在启动时运行。
如果您添加'&'到行尾,它将在后台运行。
如果你不想手动运行程序(不是在启动时),你可以通过按ctrl + alt + f1切换到另一个tty,(这将打开tty1并将与f1-f6一起使用)然后运行命令。这个终端你不必在一个窗口打开,所以你不必担心它关闭。要返回桌面,请使用ctrl + alt + f7。