🐧 Как сохранить процесс Linux запущенным после сбоя или перезагрузки |

🐧 Как сохранить процесс Linux запущенным после сбоя или перезагрузки

Мануал

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

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

Но знаете что?

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

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

1. Служба Systemd

Одним из популярных методов является использование супервизоров процессов, таких как systemd, который является широко используемой системой init, которая может быть настроена на мониторинг и перезапуск отказавших служб, обеспечивая надежное решение для надежности приложений.

🐧 Как фильтровать логи systemd с помощью journalctl с примерами

Создание службы Systemd

Чтобы использовать systemd для автоматического перезапуска, создайте файл службы (например, ‘myapp.service’) с помощью вашего любимого редактора.

sudo nano /etc/systemd/system/myapp.service

Затем определите поведение перезапуска, как показано далее.

[Unit]
Description=My Application

[Service]
ExecStart=/path/to/myapp
Restart=always

[Install]
WantedBy=default.target

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

sudo systemctl enable myapp.service
sudo systemctl start myapp.service

Мы также можем быстро узнать, как работает наш сервис.

Если мы хотим узнать только, работает ли сервис, мы можем набрать:

sudo systemctl is-active myapp.service
sudo systemctl status myapp.service

Если мы захотим, мы можем быстро остановить любую службу, которую мы создали ранее.

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

sudo systemctl stop myapp.service

Чтобы предотвратить ее автоматический запуск, нужно использовать команду “disable”.

sudo systemctl disable myapp.service

2. Скрипты

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

Если она не работает, эти скрипты могут запустить ее снова.

Считайте эти скрипты дружелюбными роботами, которые следят за тем, чтобы ваша любимая игра или приложение работали без сбоев!

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

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

#!/bin/bash

# Check if the app is running
if ! pgrep -x "myapp" > /dev/null
then
    # If not, restart the app
    /path/to/myapp
fi

Затем запланируйте запуск скрипта каждую минуту с помощью cron (планировщика заданий).

crontab -e

Далее нам нужно включить следующую строку.

* * * * * /path/to/keep_alive_script.sh

3. Supervisord

Supervisord – это система управления процессами для Linux, которая помогает отслеживать и контролировать процессы, обеспечивая их жизнеспособность даже при сбоях и перезагрузках системы.

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

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

sudo apt install supervisor         [На Debian, Ubuntu и Mint]
sudo yum install supervisor         [На RHEL/CentOS/Fedora и Rocky/AlmaLinux]
sudo emerge -a sys-apps/supervisor  [На Gentoo Linux]
sudo apk add supervisor             [На Alpine Linux]
sudo pacman -S supervisor           [На Arch Linux]
sudo zypper install supervisor      [На OpenSUSE]
sudo pkg install supervisor         [На FreeBSD]

После установки необходимо создать файл конфигурации, чтобы указать Supervisord, какими процессами управлять.

sudo nano /etc/supervisor/supervisord.conf

Далее вам нужно добавить в файл следующую конфигурацию.

[program:myapp]
command=/path/to/your/application
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log

I

В приведенном выше примере конфигурации замените /path/to/your/application на фактическую команду запуска вашего приложения. О

пции autostart и autorestart обеспечивают автоматический запуск приложения и его перезапуск в случае сбоя.

После настройки конфигурации вы можете взаимодействовать с Supervisord с помощью команды supervisorctl.

supervisorctl status
supervisorctl start myapp
supervisorctl stop myapp
supervisorctl restart myapp

Эти команды позволяют проверять состояние процессов и вручную запускать, останавливать или перезапускать их при необходимости.

Заключение

Применяя эти методы, вы можете значительно повысить надежность ваших приложений в системах Linux.

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

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

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. Invis

    В статье забыли про systemctl daemon-reload, без которого systemd не увидит новую службу до перезагрузки системы.

    Ответить
    1. cryptoparty автор

      Спасибо за дополнение

      Ответить