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

В определенных условиях myprocess может завершиться с ошибкой и вернуться. Есть ли (стандартный) способ, как обнаружить его сбой и автоматически перезапустить?

задан Honza 243

7 ответов 7

У Buildroot есть три возможных системы инициализации, поэтому есть три способа сделать это:

BusyBox init

При этом добавляется запись в /etc/inittab .

::respawn:/bin/myprocess

Обратите внимание, что init BusyBox имеет уникальный формат /etc/inittab . Второе поле не имеет смысла, а первое поле — это не идентификатор, а базовое имя устройства.

Linux «System V» init

Опять же, добавляется запись в /etc/inittab .

myprocess:2345:respawn:/bin/myprocess

systemd

Например, вы записываете файл модуля в /etc/systemd/system/myprocess.service :
[Unit] Description=My Process [Service] ExecStart=/bin/myprocess Restart=always [Install] WantedBy=multi-user.target
Включите это для автоматического запуска при загрузке с:
systemctl enable myprocess.service
Запустите его вручную с помощью:
systemctl start myprocess.service

дальнейшее чтение

  • « 3.1.3 система инициализации ». Руководство пользователя Buildroot.

изменён grawity 239k
ответ дан JdeBP 23k

Как насчет создания подоболочки с циклом, который постоянно вызывает один и тот же процесс?

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

Если он заканчивается, следующая итерация цикла продолжается и запускается снова.

(while true; do /bin/myprocess done) https://poweruser.guru/questions/507576/%D0%BA%D0%B0%D0%BA-%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8-%D0%BF%D0%B5%D1%80%D0%B5%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C-%D1%84%D0%BE%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9-%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81-linux-%D0%B5%D1%81%D0%BB%D0%B8-%D0%BE%D0%BD-%D0%BD%D0%B5-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82″ target=»_blank»]poweruser.guru[/mask_link]

Перезапуск остановленного процесса в Linux

linux перезапуск остановленного процесса

Тем, кто часто работает на компьютерах под управлением ОС Linux полезно знать о том что делать с остановленными процессами и правильно их снова запустить в работу. Ну и само-собой, уметь этим пользоваться. Напомню, что управление процессами в Линуксе осуществляется через командную консоль. В некоторых случаях понадобятся права ROOT’а.

Смотрим список запущенных и приостановленных процессов Linux. Будут выведены все процессы системы, за исключением убитых:

Эту команду можно так же объединить с grep. Это будет полезно, если вас интересуют какие-то конкретные процессы. Пример с vi:

Читайте также:
Что содержит примерная рабочая программа по информатике

Смотрим вывод команды ps и ищем тот процесс, который требуется возобновить, и запоминаем (либо записываем, если плохая память) ID нужного процесса. Для отправки приостановленному процессу сигнала CONTINUE (то есть «продолжить») введите вот такую команду:

Видео #32. Запуск Windows-программ на Linux

Ключ «-19» означает сигнал CONTINUE . Команда возобновляет процесс в фоновом режиме. Чтобы перевести фоновый процесс в интерактивный режим используйте такую команду:

Вот, собственно, и всё. Совсем не сложно — главное понимать что ты делаешь, ну и запомнить последовательность действий.

Источник: set-os.ru

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

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

Start — Stop — Restart — Reload

Linux обеспечивает детальный контроль над системными службами через systemd с помощью команды systemctl. Службы могут быть включены, выключены, перезапущены, перезагружены или даже включены или отключены при загрузке. Если вы используете Debian, CentOSили Ubuntu, ваша система, вероятно, использует systemd. Это руководство покажет вам, как использовать основные команды для запуска, остановки и перезапуска служб в 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 при загрузке системы, выполните команду:

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

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

Было полезно?

Почему?

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

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

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

БАЗОВЫЙ СИНТАКСИС КОМАНДЫ SYSTEMCTL

Основной синтаксис для использования команды systemctl: systemctl [command] [service_name] Как правило, вам нужно запускать это как суперпользователь поэтому команды будут начинаться с sudo.

КАК ПРОВЕРИТЬ, РАБОТАЕТ ЛИ СЛУЖБА В LINUX

Чтобы проверить, активна ли служба или нет, выполните следующую команду: sudo systemctl status SERVICE_NAME Замените SERVICE_NAME на нужный сервис. В нашем случае мы будем брать за пример веб-сервер Apache .

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

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

КАК ПЕРЕЗАПУСТИТЬ СЕРВИС

Чтобы остановить и перезапустить службу в Linux, используйте команду: sudo systemctl restart SERVICE_NAME Где SERVICE_NAME — имя вашего сервиса. После выполнения команды ваш сервис должен снова заработать. Вы можете проверить состояние с помощью команды status Для перезапуска нашего сервера Apache используем:

sudo systemctl restart apache2

КАК ПЕРЕЗАГРУЗИТЬ КОНФИГУРАЦИОННЫЕ ФАЙЛЫ СЕРВИСА

Чтобы служба перезагрузила свои файлы конфигурации, введите в терминале следующую команду: sudo systemctl reload SERVICE_NAME После перезагрузки проверьте ее состояние командой status для подтверждения. В нашем примере мы перезагрузили Apache, используя: sudo systemctl reload apache2

КАК ЗАПУСТИТЬ СЕРВИС

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

Читайте также:
Кто может получить жилье по программе

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

КАК ОСТАНОВИТЬ СЕРВИС

Чтобы остановить активную службу в Linux, используйте следующую команду: sudo systemctl stop SERVICE_NAME Для нашего апача используем команду sudo systemctl stop apache2

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

КАК ВКЛЮЧИТЬ СЕРВИС ПРИ ЗАГРУЗКЕ

Чтобы настроить службу для запуска при загрузке системы, используйте команду: sudo systemctl enable SERVICE_NAME Чтобы включить Apache при загрузке системы, выполните команду: sudo systemctl enable apache2

КАК ОТКЛЮЧИТЬ СЕРВИС ПРИ ЗАГРУЗКЕ

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

Как перезапустить зависший процесс?

Задача: Консольная прога непрерывно выводит результаты своей работы. Раз в N сек среди разных других строк должно появляться определенное сообщение. (В этой строке появляется слово, которого не бывает в других.) Если оно не появилось (а другие строки сыпятся) — надо перезапустить прогу. Исходники слишком громоздкие для меня, слишком долго буду разбираться.

Можно ли это сделать на bash или надо что-то мощнее? perl, например? 20 лет назад ковырялся в freefsd, но все уже стерлось в памяти. Поможете. Буду крайне признателен. Если упорное и не прибивается, тогда можно пожёсче: Но второе не очень рекомендуется.

Послать надо SIGHUP Сигнал SIGHUP (номер 1) изначально был предназначен для того, чтобы информировать программу о потере связи с управляющим терминалом (терминалы часто подключались к системе с помощью модемов, так что название сигнала происходит от hung up – повесить трубку). Сигнал SIGHUP посылается приложению так же и в том случае, если процесс-лидер сессии завершил свою работу. Многие программы-демоны, у которых нет лидера сессии, так же обрабатывают этот сигнал. В ответ на получение SIGHUP демон обычно перезапускается (или просто повторно читает файл конфигурации). По умолчанию программа, получившая этот сигнал, завершается. Смотри man kill Killall [имя программы] -HUP

По умолчанию программа, получившая этот сигнал, завершается.

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

По умолчанию программа, получившая сигнал [HUP], завершается.

Хм. Вот честно, ни разу не встречал такого поведения. Очень странно. Тут даже не поймешь, какой пример лучше привести — они почти все себя так ведут: bash(1), emacs(1), cp(1) и так далее.

Источник: onecomp.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru