当前位置:  开发笔记 > 编程语言 > 正文

在Linux中守护python脚本最简单的方法是什么?

如何解决《在Linux中守护python脚本最简单的方法是什么?》经验,为你挑选了1个好方法。

在Linux中守护python脚本最简单的方法是什么?我需要这适用于Linux的各种风格,所以它应该只使用基于python的工具.



1> Florian Bösc..:

请参阅史蒂文斯以及在activestate上的这个冗长的帖子,我个人发现这个帖子大部分都是不正确的,而且很冗长,我想出了这个:

from os import fork, setsid, umask, dup2
from sys import stdin, stdout, stderr

if fork(): exit(0)
umask(0) 
setsid() 
if fork(): exit(0)

stdout.flush()
stderr.flush()
si = file('/dev/null', 'r')
so = file('/dev/null', 'a+')
se = file('/dev/null', 'a+', 0)
dup2(si.fileno(), stdin.fileno())
dup2(so.fileno(), stdout.fileno())
dup2(se.fileno(), stderr.fileno())

如果您需要再次停止该过程,则需要知道pid,通常的解决方案是pidfiles.如果您需要,请执行此操作

from os import getpid
outfile = open(pid_file, 'w')
outfile.write('%i' % getpid())
outfile.close()

出于安全考虑,您可能会在妖魔化后考虑其中的任何一个

from os import setuid, setgid, chdir
from pwd import getpwnam
from grp import getgrnam
setuid(getpwnam('someuser').pw_uid)
setgid(getgrnam('somegroup').gr_gid)
chdir('/') 

您也可以使用nohup,但这对python的子进程模块不起作用

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有