Python не будет выходить при вызове с абсолютным путем от cron или subshell
У меня есть несколько скриптов Python, которые запускаются через cron, и они больше не работают правильно, когда скрипт вызывается с абсолютным путем. Они будут зависать, пока процесс не будет прекращен. Я считаю, что это произошло после того, как я переместил / var и / home в другой раздел.
Я проверил переменные окружения и не увидел ничего явно неправильного, это происходит либо при запуске с cron или bash subshell, но не при непосредственном запуске.
Если я запускаю его как подоболочку, он зависает, пока я не убью его (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 с тем же эффектом.
Подобный или такой же вопрос был задан здесь и решен перезагрузкой; Я бы лучше понял это и избежал перезагрузки, если смогу.