gpt4 book ai didi

python - 将 daemontools 与生成子进程的 Python 脚本一起使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:41:44 27 4
gpt4 key购买 nike

我正在尝试设置 daemontools使用生成各种子进程的大型 python 程序,我遇到了子进程未正确生成的问题。当通过 daemontools 启动时,子进程只是显示为僵尸进程。

我提供了一个简化的例子来证明这一点。

/服务/测试/运行:

#!/bin/sh
cd /script_directory/
exec envdir /service/test/env /usr/bin/python3 test_subprocess.py

/script_directory/test_subprocess.py

import subprocess
from time import sleep
subprocess.Popen("xterm")
while True:
sleep(1)

test_subprocess.py 只是启动一个 GUI 终端并保持事件状态,因此我可以查看它是否仍在 top/htop 中运行。如果我以 root 或非 root 用户身份运行脚本,脚本将正确执行并显示窗口。当通过 daemontools/supervise 运行时,xterm 被僵尸化并且没有窗口显示。按照描述设置 env/DISPLAY 和 env/XAUTHORITY 变量 here似乎对我不起作用。

经过进一步调查,子进程即使不使用 GUI 也会被僵尸化。例如,如果 subprocess.py 中的子进程是“top”——它不会运行。

我已经在不生成子进程的各种其他项目中成功使用守护进程,因此我认为问题不在于此处的基本设置。

daemontools 可以与生成其他进程的脚本一起使用吗?

如果没有,还有哪些其他推荐的用于守护复杂 python 应用程序的工具?

最佳答案

兄弟我不明白你去做什么。但试试这个程序:

import subprocess
p = subprocess.Popen(
['xterm', '-hold'], stdin=subprocess.PIPE)
p.communicate()

如果要给出一些参数,请使用 -e 并键入命令,如果还有其他问题,请告诉我。谢谢

关于python - 将 daemontools 与生成子进程的 Python 脚本一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32895747/

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