- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Как запустить, остановить и перезапустить сервисы в Linux
- Базовый синтаксис команды systemctl
- Как проверить, работает ли служба в Linux
- Как перезапустить сервис
- Как перезагрузить конфигурационные файлы сервиса
- Как запустить сервис
- Как остановить сервис
- Как включить сервис при загрузке
- Как отключить сервис при загрузке
- Полезно?
- Почему?
- Как перезапустить зависший процесс?
- Как перезапускать программу ?
- Как перезапускать программу ?
- Как перезапускать программу ?
- Как перезапускать программу ?
- Как перезапускать программу ?
- Как перезапускать программу ?
- Как перезапускать программу ?
- Re: Как перезапускать программу ?
- Как перезапускать программу ?
- Как запускать, останавливать или перезапускать сервисы в Ubuntu
- Использование Systemd для запуска / остановки / перезапуска служб в Ubuntu
- Запуск / остановка / перезапуск сервисов в Ubuntu с помощью команды service
- Использование скриптов Init для управления сервисами в Ubuntu
- Автоматический перезапуск сервиса Linux
- Автоматический перезапуск сервиса в systemd
- Автоматический перезапуск сервиса с помощью скрипта
ИТ База знаний
Курс по 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.
Онлайн курс по 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 при загрузке системы, выполните команду:
Как отключить сервис при загрузке
Вы можете запретить запуск службы при загрузке с помощью команды:
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Полезно?
Почему?
😪 Мы тщательно прорабатываем каждый фидбек и отвечаем по итогам анализа. Напишите, пожалуйста, как мы сможем улучшить эту статью.
😍 Полезные IT – статьи от экспертов раз в неделю у вас в почте. Укажите свою дату рождения и мы не забудем поздравить вас.
Источник
Как перезапустить зависший процесс?
Задача: Консольная прога непрерывно выводит результаты своей работы. Раз в N сек среди разных других строк должно появляться определенное сообщение. (В этой строке появляется слово, которого не бывает в других.) Если оно не появилось (а другие строки сыпятся) — надо перезапустить прогу. Исходники слишком громоздкие для меня, слишком долго буду разбираться. Можно ли это сделать на bash или надо что-то мощнее? perl, например? 20 лет назад ковырялся в freefsd, но все уже стерлось в памяти. Поможете. Буду крайне признателен.
Если упорное и не прибивается, тогда можно пожёсче:
Но второе не очень рекомендуется.
Послать надо SIGHUP Сигнал SIGHUP (номер 1) изначально был предназначен для того, чтобы информировать программу о потере связи с управляющим терминалом (терминалы часто подключались к системе с помощью модемов, так что название сигнала происходит от hung up – повесить трубку). Сигнал SIGHUP посылается приложению так же и в том случае, если процесс-лидер сессии завершил свою работу. Многие программы-демоны, у которых нет лидера сессии, так же обрабатывают этот сигнал. В ответ на получение SIGHUP демон обычно перезапускается (или просто повторно читает файл конфигурации). По умолчанию программа, получившая этот сигнал, завершается.
Смотри man kill Killall [имя программы] -HUP
По умолчанию программа, получившая этот сигнал, завершается.
Хм. Вот честно, ни разу не встречал такого поведения. В худшем случае не реагируют никак, в лучшем — перечитывают конфигурацию и продолжают работать.
По умолчанию программа, получившая сигнал [HUP], завершается.
Хм. Вот честно, ни разу не встречал такого поведения.
Очень странно. Тут даже не поймешь, какой пример лучше привести — они почти все себя так ведут: bash(1), emacs(1), cp(1) и так далее.
В худшем случае не реагируют никак
Источник
Как перезапускать программу ?
Каким образом в Linux правильно реализовать перезапуск программы после вылета по ошибке ? В ДОС я бы написал bat: :loop programm goto loop
А как грамотно это сделать в Linux ?
Как перезапускать программу ?
Аналог того, что выше — while :; do program; done
Как перезапускать программу ?
while true; do program; done;
Как перезапускать программу ?
for ((;;)); do program; done
Как перезапускать программу ?
until false;do program;done
Как перезапускать программу ?
Правильнее всего вот так:
(defun forever ()
(progn
(run-shell-command «твоя программа»)
(forever)))
(forever)
Как перезапускать программу ?
yes | xargs -n1 proga
Re: Как перезапускать программу ?
>yes | xargs -n1 proga
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
ls: cannot access y: No such file or directory
Не слушай советчиков, с defun получается оптимальнее.
Как перезапускать программу ?
> ls: cannot access y: No such file or directory
но она же запускается!
> ls: cannot access y: No such file or directory
> ls: cannot access y: No such file or directory
Источник
Как запускать, останавливать или перезапускать сервисы в Ubuntu
Как и во всех других операционных системах, в Linux есть службы и процессы, выполняемые во время работы системы в фоновом режим. Когда система загружается, сервисы запускаются автоматически и продолжают работать, пока система не выключится. Однако вы можете запускать, останавливать и перезапускать службы вручную.
Рассмотрим различные способы запуска, остановки и перезапуска служб в Ubuntu с помощью systemd, команды service и сценария инициализации init.
Список всех сервисов в Ubuntu
Прежде всего нужно получить список всех служб на вашем компьютере.
Он покажет полный список сервисов на вашем компьютере.
Использование Systemd для запуска / остановки / перезапуска служб в Ubuntu
Вы можете запускать, останавливать или перезапускать сервисы с помощью утилиты systemd systemctl. Начиная с версии 16.04 Ubuntu включает в себя systemd как init-систему по умолчанию. На сегодняшний день это предпочтительный способ работы со службами.
sudo systemctl [действие] [имя службы]
Например, рассмотрим как запустить, остановить или перезапустить службу брандмауэра ufw в Ubuntu.
Откройте окно терминала и введите следующие команды.
Проверить статус службs:
Управление сервисами с помощью systemd
Запуск / остановка / перезапуск сервисов в Ubuntu с помощью команды service
Вы также можете запускать, останавливать или перезапускать службы, используя service. Откройте окно терминала и введите следующие команды.
Проверить статус службы:
Использование скриптов Init для управления сервисами в Ubuntu
Вы можете запускать, останавливать или перезапускать службы, используя сценарии инициализации в каталоге /etc/init.d. Этот каталог на самом деле содержит в себе различные скрипты для разных сервисов. Сценарии инициализации устарели с тех пор, как Ubuntu перешла на Systemd, поэтому этот метод будет использоваться, только если вам приходится иметь дело со старой версией Ubuntu. Откройте окно терминала и введите следующие команды.
Проверить статус службы:
Таким образом, вы можете запускать, останавливать и перезапускать службы разными способами, не перезагружая всю операционную систему. Вы также можете использовать эти команды в других дистрибутивах Linux.
Источник
Автоматический перезапуск сервиса Linux
Иногда сервисы ни с того ни с сего падают и приходиться их вручную восстанавливать. Если для пользователя домашнего компьютера это не критично, потому что если сервис падает во время разработки, то это даже хорошо, можно сразу увидеть что есть проблема. Но на серверах и VPS сервисы должны работать постоянно для обеспечения доступа к веб-сайту или приложению.
В этой инструкции я покажу как настроить автоматический перезапуск сервиса Linux несколькими способами: с помощью скрипта мониторинга периодически запускаемого через cron и в systemd.
Автоматический перезапуск сервиса в systemd
По умолчанию, если ваш сервис будет убит или завершится некорректно, systemd не будет с ним ничего делать. Но можно настроить сервис так, чтобы при падении или даже остановке он автоматически перезапускался. Для этого используется директива Restart, которую надо добавить в секцию Service. Например, рассмотрим настройку автоматического перезапуска сервиса Apache:
sudo systemctl edit apache2
[Service]
Restart=on-failure
RestartSec=5s
Директива RestartSec указывает сколько ждать перед перезапуском сервиса. Когда завершите сохраните изменения и выполните команду daemon-reload, чтобы перечитать конфигурацию:
sudo systemctl daemon-reload
Затем чтобы проверить что всё работает посмотрите состояние процесса, завершите процесс сигналом kill:
sudo systemctl status apache2
kill -KILL 32091
И снова посмотрите состояние. Процесс будет запущен. Система инициализации автоматически перезапустит его как только он завершится с кодом возврата ошибки. Если вы хотите чтобы процесс перезапускался всегда, необходимо использовать директиву Restart: always. Однако с ней надо быть осторожным, она вовсе не даст вам завершить процесс, даже если будет необходимо. Для того, чтобы процесс, который постоянно падает не перезапускался, можно добавить лимит на количество перезапусков в секцию Service:
sudo systemctl edit apache2
[Service]
StartLimitIntervalSec=500
StartLimitBurst=5
Restart=on-failure
RestartSec=5s
Директивы StartLimitBurst и StartLimitIntervalSec указывают, что надо попытаться перезапустить сервис пять раз, и если он все эти пять раз упадёт, то больше его не трогать. Вторая директива ограничивает время перезапусков сервиса до 500 секунд.
Автоматический перезапуск сервиса с помощью скрипта
Это самый простой и самый надежный способ работающий абсолютно во всех дистрибутивах linux и не требующий установки дополнительных утилит. Для того же Apache скрипт выглядит следующим образом:
sudo vi /usr/local/bin/apache-monitor.sh
#!/bin/bash
ps -A | grep apache2 || systemctl start apache2
Сохраните файл, сделайте его исполняемым:
chmod ugo+x /usr/local/bin/apache-monitor.sh
Теперь добавьте запись в cron для периодического запуска скрипта:
На этом все, автоматический перезапуск сервисов штука может и немного сложная, но необходимая в серьезных системах.
Источник