gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 18:15:29 24 4
gpt4 key购买 nike

在 Linux 中守护 python 脚本的最简单方法是什么?我需要它适用于所有 Linux 版本,所以它应该只使用基于 python 的工具。

最佳答案

参见 Stevens还有这个lengthy thread on 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's subprocess module

关于python - 在 Linux 中守护 python 脚本的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/115974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com