Я хочу мати процес, який буде перезапущений, якщо він вийде з ладу. Я трохи погуглився і виявив, що легким рішенням є використання демомонтолів .
Я не розумів, як це налаштувати.
- Який найпростіший спосіб отримати такий функціонал?
- Як це налаштувати?
Я хочу мати процес, який буде перезапущений, якщо він вийде з ладу. Я трохи погуглився і виявив, що легким рішенням є використання демомонтолів .
Я не розумів, як це налаштувати.
Відповіді:
Здається, ви шукаєте функціонал, який вже надається в 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 з належною підтримкою User Job.
servicename.confмає відповідати команді для запуску start servicename. Я підозрюю, що ви вибрали інше ім’я.
Надзвичайно простий інструмент, який може досягти такого ж ефекту, не потребуючи конфігурації immortal: https://immortal.run/
Просто виконайте команду так:
immortal <cmd>
Він запуститься у фоновому режимі та автоматично перезапуститься, якщо він вийде.
immortalctl: Перегляд стану запущених завдань. Тут є nameнадрукований стовпець, який ви можете використовувати для позначення завдання з іншими командами управління.immortalctl stop <name>: Зупиняє моніторинг завдання з вказаним іменем (воно не буде автоматично перезапущено, але поточний процес буде продовжуватись виконувати)immortalctl -k <name>: Надсилає SIGKILL до поточного процесу.immortalctl exit <name>: Зупиняє моніторинг роботи із заданим іменем та видаляє її зі списку завдань.stdoutі stderrна передньому плані?
immortalctl -l out.log <cmd> && tail -f out.logдля досягнення того ж ефекту.
Якщо вам не потрібна функція демона / послуги / фонового процесу, а ви просто хочете це зробити в консолі, тоді створіть файл під назвою autorestart.sh:
#!/bin/bash
while [ 1 ]; do
some_command
done
Потім ./autorestart.shавтоматично перезавантажиться, some_commandякщо він вийде або вийде з ладу. CTRL-C розбиває цикл і чисто закриває програму.
Тестовано на Ubuntu 18.04.
Є спосіб без "Upstart". Ключове слово "inittab" :-). Хоча це файл, як правило, не змінений за замовчуванням, він може бути використаний для досягнення потрібного повторного закладання на машинах SYSV.
ps-watcher - це інструмент, який спостерігає за запущеними процесами та виконує дію за визначених обставин. Давайте встановимо його:
apt-get install ps-watcher
Детальніше див. У нижній частині Running HHVM with backback to PHP-FPM - це добре працювало для мене.
Процесами запуску та повторного панування керує "systemd", оскільки Ubuntu 15.04, хороший вступ можна знайти тут
приклад для початку роботи доступний на
https://www.devdungeon.com/content/creating-systemd-service-files
Цей підхід витісняє старіші на основі / etc / inittab та upstart.