簡體   English   中英

從cron或subshel​​l用絕對路徑調用Python時不會退出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM