Перезапуск всех демонов linux

Snussi’s home in the web space

Категории

Автоматический перезапуск демона 19.03.2013

Пока проверяется файловая система на моем сервере, я решил написать короткую заметку о том, как автоматически перезапускать демон на под линуксом.

Метод крайне топорный, но работает.

  • Максимальное время простоя — 1 минута. Т.е., в худшем случае, демон будет зависший/отключенный/etc в течение минуты.
  • Вы должны знать команду, которая в случае работы демона вернет какую-либо строку, а если нужен перезапуск — не вернет.

Я использую этот метод для автоматического перезапуска отваливающегося winbind‘а и уходящего в астрал 1С сервера под Linux.

Важное замечание! Прежде чем использовать этот топорный или какой-то другой прекрасный метод перезапуска демона, попробуйте сделать так, чтобы перезапуска не требовалось вообще (это я для случая, когда демона выбивает) — почитайте логи, погуглите и решите проблему в корне.

С теорией все, займемся практикой.

Метод, который я использую, заключается в ежеминутном запуске скрипта, который проверяет наличие демона и, если его нет, перезапускает службу.

Создаем файл /usr/local/sbin/mydaemon.check (для winbind):

Здесь команда /usr/bin/wbinfo -u | grep -q v.shokov запрашивает в домене всех пользователей, проверяет — есть ли там пользователь v.shokov (считаем, что он есть всегда) и, если возвращается пустая строка, то winbind перезапускается.

Можно сделать проверку на существование процесса — /bin/ps -A | grep -q winbind или, например, статус службы — /etc/init.d/winbind status | grep -q winbindd.

Важно лишь, чтобы команда как можно меньше грузила систему и, если служба нуждается в перезапуске, — возвращала пустую строку, а если не нуждается — то возвращала хоть что-то.

Теперь добавляем задание в /etc/crontab

Источник

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Как запустить, остановить и перезапустить сервисы в Linux

Start — Stop — Restart — Reload

3 минуты чтения

Linux обеспечивает детальный контроль над системными службами через systemd с помощью команды systemctl. Службы могут быть включены, выключены, перезапущены, перезагружены или даже включены или отключены при загрузке. Если вы используете Debian, CentOSили Ubuntu, ваша система, вероятно, использует systemd.

Читайте также:  Windows phone приложение параметры

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Это руководство покажет вам, как использовать основные команды для запуска, остановки и перезапуска служб в Linux.

Базовый синтаксис команды systemctl

Основной синтаксис для использования команды systemctl:

Как правило, вам нужно запускать это как суперпользователь поэтому команды будут начинаться с sudo.

Как проверить, работает ли служба в Linux

Чтобы проверить, активна ли служба или нет, выполните следующую команду:

Замените SERVICE_NAME на нужный сервис.

В нашем случае мы будем брать за пример веб-сервер Apache.

Интересный факт: в Ubuntu и других дистрибутивах на основе Debian служба Apache называется apache2. В CentOS и других дистрибутивах RedHat служба Apache называется httpd или httpd.service

Так мы проверили состояние Apache. Выходные данные показывают, что служба активна (работает), как на рисунке ниже:

Как перезапустить сервис

Чтобы остановить и перезапустить службу в Linux, используйте команду:

Где SERVICE_NAME — имя вашего сервиса.

После выполнения команды ваш сервис должен снова заработать. Вы можете проверить состояние с помощью команды status

Для перезапуска нашего сервера Apache используем:

Как перезагрузить конфигурационные файлы сервиса

Чтобы служба перезагрузила свои файлы конфигурации, введите в терминале следующую команду:

После перезагрузки проверьте ее состояние командой status для подтверждения.

В нашем примере мы перезагрузили Apache, используя:

Как запустить сервис

Чтобы запустить службу в Linux вручную, введите в терминале следующее:

Например, команда для запуска службы Apache:

Как остановить сервис

Чтобы остановить активную службу в Linux, используйте следующую команду:

Для нашего апача используем команду

Проверьте, остановился ли сервис с помощью команды status . Вывод должен показать, что сервис неактивен — inactive (dead)

Как включить сервис при загрузке

Чтобы настроить службу для запуска при загрузке системы, используйте команду:

Чтобы включить Apache при загрузке системы, выполните команду:

Как отключить сервис при загрузке

Вы можете запретить запуск службы при загрузке с помощью команды:

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Полезно?

Почему?

😪 Мы тщательно прорабатываем каждый фидбек и отвечаем по итогам анализа. Напишите, пожалуйста, как мы сможем улучшить эту статью.

😍 Полезные IT – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.

Источник

IgorKa — Информационный ресурс

Немного обо всем и все о немногом, или практический опыт системного администратора.

Январь 2010
Пн Вт Ср Чт Пт Сб Вс
« Дек Фев »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Лекция №25 — Управление демонами

Сегодня мы поговорим о процессах Linux, которые носят называние — демоны, а также посмотрим каким образом происходит управление демонами (или службами, если проводить параллель с Windows). Основное отличие процесса-демона от обычного пользовательского процесса, в том, что демон не имеет управляющего терминала, а соответственно взаимодействовать с ним пользователь может только посредством других программ или управляющих скриптов. Итак, в простейшем случае демон — это исполняемый файл или скрипт, который работает в фоновом режиме. Очень часто такие файлы заканчиваются на букву d (от daemon): sshd, httpd, cupsd — хотя это не обязательно.

Для того чтобы управлять демоном существует управляющий скрипт для каждого демона. Расположены такие скрипты, как правило, в каталоге /etc/init.d/. Именуются такие скрипты так как и сам демон (только без буквы d в конце), хотя это не является незыблемым правилом. Например, скрипт /etc/init.d/ssh управляет демоном sshd, который расположен в каталоге /usr/sbin/.

Что подразумевается под управлением демона? Это возможность выполнить определенные операции, такие как запуск демона, останов, перезапуск, принудительный останов и перезапуск, и некоторые другие. Поэтому запуская управляющий скрипт мы обязательно должны передать ему параметр, который описывает производимое с демоном действие. Эти параметры строго определены, а основные и наиболее часто встречающиеся это:

start — запуск демона
stop — останов демона
restart — перезапуск демона
reload — перезагрузка (перечитывание конфигурационных файлов) параметров демона
force-reload — принудительная перезагрузка параметров демона

Если вы сами будете писать подобный управляющий скрипт, то должны помнить, что он должен обрабатывать как минимум два параметра: start и stop. Можете открыть любой скрипт из директории /etc/init.d/ и увидеть, как посредством конструкции case реализована обработка управляющих параметров.

Итак, давайте попробуем остановить и запустить демон cron. Для этого в каталоге /etc/init.d/ находится управляющий скрипт /etc/init.d/cron:

Если запустить его без параметров (строка 1), то увидим подсказку какие параметры необходимо передавать этому скрипту (строка 2). Пробуем запустить с параметром stop (строка 3) и проверяем, что демон остановлен (строка 5). Затем запускаем демон (строка 6) и проверяем (строка 8). Таким же образом происходит управление другими демонами.

Давайте теперь посмотрим как происходит запуск демонов во время загрузки операционной системы Linux и во время ее остановки. Как вы должны помнить в Linux есть такое понятие как runlevel — уровень запуска системы. На каждом уровне запуска системы выполняются четко заданное количество демонов. При переходе с уровня на уровень, демоны, которые не должны работать — завершаются, а которые должны работать — запускаются. Для того чтобы указать системе какие демоны на каком уровне запуска должны стартовать или останавливаются в разных дистрибутивах существуют специально предназначенные для этого утилиты. Но мы сейчас посмотрим на сам механизм работы системы запуска демонов, чтобы понять ее суть.

В каталоге /etc есть каталоги с именем rcN.d, где N — это символ указывающий на runlevel к которому относится каталог. То есть имеем такие каталоги: rc0.d, rc1.d, rc2.d, rc3.d, rc4.d, rc5.d, rc6.d и rcS.d. Если посмотреть содержимое каталогов, то можно увидеть, что в них содержатся символические линки на скрипты из каталога /etc/init.d/:

Символические линки именуются в соответствии со следующим правилом: сначала идет латинская большая буква S или K, затем двузначное число и после этого точное называние скрипта на который ссылается символический линк. Буква K в имени линка означает, что скрипт на который он ссылается должен быть выполнен с параметром stop. То есть K11cron (строка 6) означает, что будет выполнена команда /etc/init.d/cron stop. То есть будет остановлен демон cron. Соответственно буква S означает, что скрипт на который указывает линк должен выполнится с параметром start. Двузначное число определяет порядок выполнения скриптов, а соответственно порядок запуска или завершения демонов. Первыми запускаются скрипты с меньшими номерами. Таким образом реализуется разрешение зависимостей скриптов (демонов). Например, демон cron должен быть остановлен только после того как будет остановлен демон apache2 (строки 6 и 3). Если у символических линков одинаковый номер, то это означает, что демоны не зависят друг от друга и скрипты могут выполняться в любом порядке. Также нужно отметить, что сначала выполняются все скрипты с буквой K, а затем только все скрипты с буквой S.

Как известно все пользовательские процессы (а демоны также к таковым относятся) начинаются с процесса init, а который последовательно читает файл /etc/inittab. Среди прочих в /etc/inittab есть следующие строки:

Когда системы переходит на какой либо runlevel, например, на шестой, то выполняется скрипт /etc/init.d/rc, которому в качестве параметра передается номер уровня запуска — 6. В результате своей работы скрипт /etc/init.d/rc начинает выполнять в соответствии с вышеописанными правилами все скрипты на которые есть символические ссылки в каталоге /etc/rc6.d/. Если упрощенно, то имя каждого символического линка преобразуется из вида K01gdm в /etc/init.d/gdm stop, а S10sysklogd в /etc/init.d/sysklogd start.

Таким образом если вы хотите, чтобы какой-то демон запускался (или останавливался) на нужном вам уровне вам нужно создать соответствующий символический линк в соответствующем каталоге /etc/rcN.d/. Например, если вы не хотите, чтобы демон cron запускался на всех уровнях значит из всех каталогов /etc/rcN.d/ необходимо удалить линк вида S80cron.

Если у вас есть свой собственный демон (например mydaemon c управляющим скриптом mydaemon) и вы хотите его запускать на 5-м уровне запуска значит в каталоге /etc/rc5.d/ вам необходимо создать символический линк:

/ linux$ sudo ln -s / etc / init.d / mydaemon / etc / rc5.d / S99mydaemon

Источник

Читайте также:  Linux eval ssh agent
Оцените статью