Запустите скрипт Python, который никогда не будет убит

У меня работает скрипт python script.py на новом экране, но иногда сценарий убивается:

18
21
Restarting processes... done
2
Killed

Как я могу защитить скрипт от гибели, даже когда я закрываю консоль? Должен ли я использовать & или nohup?

3 ответа

Я бы порекомендовал добавить этот код в ваш скрипт http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/

Или используйте экран.

Изменить: Это немного более современно, но я не использовал его (я использую что-то нестандартное) http://pypi.python.org/pypi/python-daemon

Современный способ сделать это - использовать systemd. Вы просто создаете единицу службы с type=Simple без screen/tmux и устанавливаете restart= всегда, чтобы перезапускать скрипт при любых неожиданных выходах.

Вместо screen/tmux вы также можете использовать start-stop-daemon - нативный инструмент для систем на основе Debian для демонстрации приложений. Но перезапуск при выходе вы должны реализовать с помощью сторонних инструментов, таких как monit.

Вы имеете в виду, что он работает внутри GNU screen сессия? В этом случае он не должен быть уничтожен, если не возникнет какая-либо проблема со сценарием, и он завершится из-за этой проблемы.

Если вы не используете screen, используйте начать использовать его или tmux (который мне нравится больше).

Другие вопросы по тегам