Этот ответ относится к версиям Ubuntu с Upstart (<= 14.10). Используйте другой подход для версий с Systemd (> = 15.04).
Кажется, вы ищете функциональность, уже предоставленную в Ubuntu с Upstart . Раздел respawn
в конфигурации будет делать именно то, что вам нужно. Я бы рекомендовал против использования менее стандартного способа борьбы с этим.
Без более подробной информации о процессе, которым вы пытаетесь управлять, трудно сказать, как должна выглядеть конфигурация. Это зависит от того, разветвляется ли он и помещается ли, например, в фоновом режиме. Документация Upstart по respawn
разделу должна дать вам больше информации.
К сожалению, пока невозможно правильно запустить задания пользователя : невозможно запустить программу для запуска задания пользователя
пример
Предположим, мы хотим, чтобы приложение «Калькулятор» работало, даже если оно было убито огнем (сигнал 9).
Создайте файл конфигурации в /etc/init/calculator.conf
(на основе этой статьи ):
#!upstart
description "Calculator"
# Start job via the daemon control script. Replace "gert" with your username.
exec su -l gert -c 'export DISPLAY=:0; /usr/bin/gnome-calculator'
# Restart the process if it dies with a signal
# or exit code not given by the 'normal exit' stanza.
respawn
# Give up if restart occurs 10 times in 90 seconds.
respawn limit 10 90
Запустите это, запустив
sudo start calculator
Он открывается на вашем текущем дисплее ( :0
) и наслаждайтесь удивительностью, видя, как он перезапускается после закрытия.
Определите идентификатор процесса, например, выполнив ps aux | grep calculator
:
gert 13695 0.2 0.4 349744 16460 ? Sl 13:38 0:00 /usr/bin/gnome-calculator
Убей его огнем.
sudo kill -9 13695
Посмотрите, как оно появляется снова:
gert 16059 4.6 0.4 349736 16448 ? Sl 13:40 0:00 /usr/bin/gnome-calculator
Обратите внимание, что это будет более элегантно с планами для планов Ubuntu 13.04 с надлежащей поддержкой пользовательских заданий.