@Evgeny_A

Как корректно запустить Python скрипт в фоне через SSH?

Здравствуйте.

Не могу понять, почему все далее перечисленные варианты запуска Python скрипта в фоне не работают как я ожидаю. Есть у меня скрипт, который использует multiprocessing библиотеку для парсинга сайта. Выполняться скрипт должен 7-9 дней. Проверяю, запущен ли скрипт в фоне или нет с помощью команды ps.

Вот что я пробовал:

nohup python3 script.py
После ввода команды терминал выводит сообщение "nohup: ignoring input and appending output to 'nohup.out'", но не дает ввести новую команду находясь в режиме обработки команды. Если нажать ctrl+с, то контроль над консолью возвращается, но работа скрипта прекращается. Если консоль закрыть, то запущенный скриптом процесс умирает.

python3 script.py > /dev/null &
В это случае консоль возвращает номер запущенного процесса, но вместо ожидаемого молчания от скрипта, вижу в консоли разные сервисные сообщения скрипта (в основном предупреждения от библиотеки urllib3). Консоль как и в первом случае не дает вводить новые команды без ввода ctrl+с. Если закрыть консоль, то скрипт отключается.

python3 script.py > script.log 2>&1 /null &
Консоль возвращает номер запущенного процесса, никаких предупреждений не выводится. Если закрыть консоль, а потом снова запустить, то после ввода команды ps процесс существует, но рандомным образом процесс умирает. Иногда через 5 минут, иногда чере 5 часов. В файле с логами (script.log) нет вообще никаких сообщений о краше.

Подскажите каким образом запускать скрипт, чтобы он работал в фоне корректно или как отладить текущую ситуацию?
  • Вопрос задан
  • 2638 просмотров
Решения вопроса 1
@lz961
nohup python3 script.py &

ps -e | grep python
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@damprog
использовать screen
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы