有一个很好的库可以完成这一功能,可惜因为文档少所以网上例子不太多
库名:python-daemon
可以通过Pip来安装
最简单的使用方式
当然代码块中最好放一个长时间执行并写日志到某个路径的代码,方便观察代码的执行情况import daemon with daemon.DaemonContext(): print "your code"
简单但是缺乏必要的控制,比如 如果我们想保证无论多次执行程序都只保证系统内只有一个改程序的进程的话就需要pid文件来控制
这时候可以使用这个库带的另一个类
DaemonRunner
import os import time from daemon.runner import DaemonRunner _base_path="/tmp/" class MyApp(object): stdin_path = "/dev/null" stdout_path = os.path.join(_base_path, "myapp.stdout") stderr_path = os.path.join(_base_path, "myapp.stderr") pidfile_path = os.path.join(_base_path, "myapp.pid") pidfile_timeout = 5 def run(self): for i in range(10): print i time.sleep(5) if __name__ == '__main__': run = DaemonRunner(MyApp()) run.do_action()
例如这样
就可以通过
python test.py start 来启动daemon进程
python test.py stop 来停止daemon进程
并且可以通过/tmp/myapp.pid来查看进程的pid