我有一些通过 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 具有相同的效果。
此处提出了类似或相同的问题,并通过重新启动解决;如果可以的话,我宁愿弄清楚并避免重新启动。