На самом деле я не уверен, стоит ли мне использовать сценарии оболочки или уже есть какие-то способы. Но какой бы подход мы ни использовали, я бы хотел, чтобы Служба работала постоянно.
Скажем iptables
в качестве примера. Затем ..
- Всякий раз , когда
iptables
услугаstopped
или (другими словами) не работает, я хочу, чтобы это былоstarted
(илиrestarted
) .. автоматически всякий раз , когда он остановился (или не работает). - Другими словами, я хочу, чтобы Служба работала постоянно.
(Может быть, я мог бы дать честную частоту проверки, если проверка в режиме реального времени является проблемой. Так скажем, каждые 5 минут)
Единственный способ, которым я мог придумать, это использовать сценарии оболочки с Cron Tab.
- Есть ли какое-нибудь умное решение, пожалуйста?
Благодарность!
alerts
вы что-то не работали.restarted
когда она остановлена, по любой причине. Нет проблем с перезагрузкой.Ответы:
Обновление март 2018
Этот ответ сейчас довольно старый, и с момента его написания, systemd выиграл войну pid1 на Linux. Таким образом, вам, вероятно, следует создать системный модуль, если systemd встроен в ваш дистрибутив (а это большинство из них).
Ответ ниже сохраняется для потомков.
Ответ monit выше действителен, но я подумал, что упомяну несколько альтернатив:
Стоит помнить, что ваша операционная система уже решила проблему управления процессами. Традиционно в Linux используется sysvinit, который представляет собой набор скриптов, которые вы видите в init.d. Однако он довольно тупой и не может отслеживать процессы, сценарии init.d сложны и заменяются по уважительной причине.
Более современные операционные системы начинают заменять sysvinit, а лидерами являются Upstart и Systemd. Debian склоняется к systemd, Ubuntu разработал и почти уже перешел на Upstart, и, подобно Debian Redhat / CentOS / Fedora, двигается к systemd. Таким образом, если вы используете ОС, которая уже заменила sysvinit, я бы порекомендовал использовать встроенную. Сценарии гораздо проще написать, чем сценарии инициализации.
Я использовал runit и мне это очень нравится, но проще всего использовать supervisor. Он также очень хорошо документирован, работает практически везде и упакован во все основные дистрибутивы.
Но что бы вы ни делали, пожалуйста, пожалуйста, НЕ используйте сценарий оболочки. С таким подходом так много всего плохого!
источник
iptables
плохой пример, так как на самом деле это не служба или демон, который работает, а часть ядра. Вы не можете «остановить»iptables
, вы можете только дать ему конфигурацию, а «остановить» - дать пустую конфигурацию. Действительно, у меня произошел сбой систем Linux, но настройка переадресации портовiptables
продолжает работать.В любом случае, утилита под названием
monit
будет делать то, что вы хотите. Если вы используете Debian, этоapt-get install monit
далеко. Это немного сложно, но очень гибко.источник
Мы используем этот простой скрипт для оповещения и запуска службы, если она не запущена. Вы также можете добавить больше служб.
источник
Альтернативное решение для рабочего стола (KDE):
Мы можем наблюдать за сервисом со статусом сервера приложений / виджетов ... после установки просто добавьте команду в виджет, чтобы отслеживать ваш сервис
Пример :
systemctl status httpd.service
Версия KDE 4: https://store.kde.org/content/show.php?content=101336
Версия KDE 5: https://store.kde.org/p/1190292/
источник
Я знаю, что прошло несколько лет с тех пор, как был задан вопрос. но с помощью systemd (в основном доступен с centos и REHL) вы можете запустить эту команду bash с помощью cron, чтобы проверить и перезапустить, если служба не работает.
сохраните его в каталоге bin и назовите его как monitor. Дайте ему соответствующее разрешение на файл. затем запустить его как
если вы хотите проверить службу Redis и перезапустить / запустить при необходимости.
наконец, добавьте это к своей работе cron.
надеюсь, это поможет
источник
Чтобы добавить к длинному списку контроля init / svc, в качестве подкаталога на S6 в блоке появился новый ребенок 66, который управляет сервисом s6 и регистрирует его быстрым, легким и удобным для пользователя способом. Это ссылка на официальную документацию для Obarun-Linux https://web.obarun.org/software
Это часто задаваемые вопросы о том, как использовать это программное обеспечение 66 и понять s6 http://sysdfree.wordpress.com/266
Поскольку в его стабильном выпуске была обнаружена только одна ошибка, связанная с изменениями в ядре с 4.20 -> 5.0, все остальные сообщаемые проблемы были связаны с тем, что люди узнавали что-то новое. Если управление службами должно было стать проще, лучше переключиться на ms-windows (запрет Линуса). Чтобы увидеть в реальной жизни, как это может работать, нужно всего лишь скачать Obarun live.iso и поиграть с ним. Установите службы и включите их 66-скрипты, убивайте их, просматривайте их журналы, останавливайте их и запускайте (пока они включены), объединяйте сервисы в дерево, и деревья сервисов запускаются и останавливаются вместе, имеют сервисы уровня пользователя отдельно из системы. Он хорошо выполняет то, что делает s6, и упрощает использование пуленепробиваемой системы под s6.
Загрузки изображений можно найти здесь: https://web.obarun.org/index.php?id=74 md5 проверить файлы https://repo.obarun.org/iso/
Помимо init и управления сервисами s6 / 66 не имеет никаких зависимостей от чего-либо еще в системе. Это слой базовой системы, позволяющий остальной части программного обеспечения работать самостоятельно, init / svc-mgmt вслепую. Все s6 и 66 написаны на C и не зависят от linux или glibc. Серверы Скарнет (s6 авторы) работают уже почти десять лет без особых пауз в работе собственной пользовательской системы. Alpine, Void и Adelie в настоящее время также имеют программное обеспечение s6 в своих хранилищах, по умолчанию Adelie использует его для надзора за обслуживанием. Пустота теперь также несет 66. Я не знаю, был ли и в какой степени кто-либо портировал s6 на xxBSD или другие системы xxIX.
источник