3

cronを介して実行されるPythonスクリプトがいくつかありますが、スクリプトが絶対パスで呼び出されたときに正しく終了しなくなりました。プロセスが終了するまでハングします。/varと/homeを別のパーティションに移動した後に発生したと思います。

環境変数をチェックインしましたが、明らかに問題はありませんでした。これは、cronまたはbashサブシェルで実行した場合に発生しますが、直接実行した場合には発生しません。

サブシェルとして実行すると、強制終了するまでハングし(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も試しました。

同様または同じ質問がここで行われ、再起動によって解決されました。私はむしろそれを理解し、可能であれば再起動を避けたいと思います。

4

2 に答える 2

7

わかりました、それを理解しました。助けてくれてありがとう。

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と問題が解決しました。

于 2012-12-11T01:41:19.850 に答える
0

それ以外の:

/usr/bin/python /var/home/wotstats/test/test.py

使用する:

cd /var/home/wotstats/test/
/usr/bin/python test.py<br/>
于 2014-07-23T13:41:25.007 に答える