![](/img/trans.png)
[英]Why doesn't Python exit from a raised exception when executed with an absolute path?
[英]Python won't exit when called with absolute path from cron or subshell
我有一些通過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具有相同的效果。
在這里提出了類似或相同的問題 ,並通過重新啟動解決了; 我寧願找出來,並避免重新啟動。
好,知道了。 謝謝您的幫助。
我跑了一條路,發現它掛在下面:
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
服務可解決此問題。
代替:
/usr/bin/python /var/home/wotstats/test/test.py
使用:
cd /var/home/wotstats/test/
/usr/bin/python test.py<br/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.