gpt4 book ai didi

从 cron 或 subshel​​l 使用绝对路径调用时,Python 不会退出

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:47 24 4
gpt4 key购买 nike

我有一些通过 cron 运行的 python 脚本,当使用绝对路径调用脚本时,它们不再正确退出。它们将挂起,直到进程终止。我相信这是在我将/var 和/home 移动到另一个分区后发生的。

我检查了环境变量,没有发现任何明显的错误,这在使用 cron 或 bash 子 shell 运行时会发生,但在直接运行时不会发生。

如果我将它作为子 shell 运行,它会一直挂起,直到我杀死它 (ctrl-c),然后给我输出。

[wotstats@rock test]$ echo 'assert 0==1, "fails"' > test.py
[wotstats@rock test]$ /bin/bash -c "/usr/bin/python /var/home/wotstats/test/test.py"
^CTraceback (most recent call last):
File "/var/home/wotstats/test/test.py", line 1, in <module>
assert 0==1, "fails"
AssertionError: fails

如果我不调用脚本,它会按预期终止而不会挂起:

[wotstats@rock test]$ /bin/bash -c "echo 'assert 0==1, \"fails\"' | /usr/bin/python"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError: fails

当发生异常时,我确实会立即收到日志错误:

Dec  9 13:33:44 rock abrt: detected unhandled Python exception in '/var/home/wotstats/test/test.py'

我根据输入运行了一些测试,发现即使调用/test.py 并以 root 运行时也会出现此问题。我也尝试了/root 和/usr,效果相同。

Similar or same question在这里被询问并通过重启解决;如果可以的话,我宁愿弄清楚并避免重启。

最佳答案

好的,明白了。感谢您的帮助。

我运行了一个 strace,发现它卡在下面:

socket(PF_FILE, SOCK_STREAM, 0)         = 4
connect(4, {sa_family=AF_FILE, path="/var/run/abrt/abrt.socket"}, 27^C
<unfinished ...>

这导致了 Bugzilla这表明 SELinux 是问题所在。我已经将 SELinux 更改为宽容模式(我把它搞砸了/var),但没有重新启动 abrtd。

重新启动 abrtd 服务解决了问题。

关于从 cron 或 subshel​​l 使用绝对路径调用时,Python 不会退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13790475/

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