Запустите скрипт 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
(который мне нравится больше).