Назад | Перейти на главную страницу

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

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