Я запускаю свой скрипт Python, используя функцию upstart Ubuntu, так что если по какой-либо причине мой скрипт Python умирает или убивается, его можно автоматически перезапустить, и все работает нормально -
Поэтому я решил использовать UPSTART
особенность Ubuntu для автоматического перезапуска скрипта Python.
После создания файла testing.conf
, подобного этому, в /etc/init/testing.conf
-
start on runlevel [2345]
stop on runlevel [016]
chdir /tekooz
exec python testing.py
respawn
я запустил команду sudo, чтобы запустить ее, и я вижу, что процесс работает с использованием ps ax
, и мой скрипт на python также работает нормально.
root@bx13:/tekooz# sudo start testing
testing start/running, process 27794
Теперь, если я убью PID описанного выше процесса, он будет перезапущен автоматически через несколько миллисекунд или микросекунд.
Есть ли возможность перезапустить мой скрипт на python через 1 секунду, если он вышел из строя или был убит? Я не хочу перезапускать немедленно.
Я не совсем понимаю, почему вы используете корневой каталог для этого «теста», и я не думаю, что это именно то, что вы хотите сделать (вы можете в итоге сломать вашу систему). Также обратите внимание, что если вы являетесь пользователем root (подсказка #
), вам не нужно "sudo". Пожалуйста, рассмотрите возможность редактирования вопроса, чтобы отразить то, чего вы пытаетесь достичь.
Я повторю для полноты картины:
Подумайте над тем, чтобы поместить файл conf в
~/.config/upstart/
, чтобы вам не нужно было sudo: вы бы использовалиinitctl start testing
для запуска скрипт например. (Я предполагаю, что ваш conf-файл не нуждается в привилегиях суперпользователя.)
При чтении поваренной книги говорится, что pre-start
, post-start
и post-stop
строфы перезапускаются на возрожденной работе. Это означает, что вы можете сделать что-то вроде этого:
start on runlevel [2345]
stop on runlevel [016]
chdir /path/to/a/folder
respawn
exec python testing.py
post-stop script
sleep 1
end script
Таким образом, перед повторным вызовом сценария будет задержка в 1 секунду. (Вы можете сделать то же самое со строфой pre-start
, таким образом, первый вызов будет иметь задержку в 1 секунду.)