我有一个python脚本,需要在启动时作为守护程序运行。该进程与tty(和pdb)分离,但是代码无法运行。
我将范围缩小到一个最小的例子
import daemon
from time import sleep
f1 = open('out.txt','a')
with daemon.DaemonContext():
while(1):
f1.write('this is a test')
sleep(5)
我希望脚本保持运行状态,并每5秒向out.txt添加一行,但是该脚本只是与tty(或pdb)分离,而ps -ax表明python解释器不再运行。 out.txt已创建,但保留为空
答案 0 :(得分:0)
您可能想使用process supervisor。
要简化过程并提供一个不依赖于systemd
(仅适用于Linux)的便携式解决方案,您可以在FreeBSD中安装例如immortal,只需执行以下操作:
pkg install immortal
然后使用以下内容创建一个your-script.yml
:
cmd: sleep 3
并通过以下方式对其进行守护进程
:$ immortal -c test.yml
要检查状态,可以使用immortalctl:
$ immortalctl
PID Up Down Name CMD
29993 0.0s test sleep 3
如果要使其即使在重新启动后也始终启动,只需将脚本(在FreeBSD中)移动到/usr/local/etc/immortal/your-script.yml
,查看有关immortaldir的更多信息
您可以添加更多选项,例如:
cmd: iostat 3
log:
file: /tmp/iostat.log
age: 10 # seconds
num: 7 # int
size: 1 # MegaBytes
require_cmd: test -f /tmp/foo
有关更多示例,请检查:https://immortal.run/post/run.yml/