У меня запущен скрипт python script.py
на новом экране, но иногда скрипт убивается:
18
21
Restarting processes... done
2
Killed
Как я могу защитить скрипт от уничтожения, даже когда я закрываю консоль? Использовать & или nohup?
Я бы рекомендовал добавить этот код в ваш скрипт http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/
Или используйте экран.
Изменить: это немного более современно, но я его не использовал (я использую что-то нестандартное) http://pypi.python.org/pypi/python-daemon
Современный способ сделать это - использовать файл systemd. Вы просто создаете единицу обслуживания с type=Simple
без экрана / tmux и установите restart=always
возможность перезапустить скрипт при любом неожиданном выходе.
Вместо screen / tmux вы также можете использовать start-stop-daemon
- собственный инструмент для систем на базе Debian для демонизации приложений. Но перезапуск при выходе вы должны реализовать с помощью сторонних инструментов, таких как monit.
Вы имеете в виду, что он работает внутри GNU screen
сессия? В этом случае он не должен быть убит, если не возникнет какая-либо проблема со сценарием, и он не завершится из-за этой проблемы.
Если вы не используете screen
, используйте, начните использовать или tmux
(что мне нравится больше).