В компьютерном мире Linux очень важно следить за тем, чтобы программы работали постоянно.
Иногда такие вещи, как внезапные сбои или перезагрузки, могут испортить работу программ, вызвать проблемы и даже потерю важных вещей.
Но знаете что?
Есть отличные способы сделать так, чтобы программы оставались живыми, даже когда случаются неприятные инциденты.
Давайте рассмотрим несколько простых способов убедиться, что ваши программы могут справиться с трудными ситуациями в Linux.
1. Служба Systemd
Одним из популярных методов является использование супервизоров процессов, таких как systemd, который является широко используемой системой init, которая может быть настроена на мониторинг и перезапуск отказавших служб, обеспечивая надежное решение для надежности приложений.
🐧 Как фильтровать логи systemd с помощью journalctl с примерами
Создание службы Systemd
Чтобы использовать systemd для автоматического перезапуска, создайте файл службы (например, ‘myapp.service’) с помощью вашего любимого редактора.
Затем определите поведение перезапуска, как показано далее.
[Unit] Description=My Application [Service] ExecStart=/path/to/myapp Restart=always [Install] WantedBy=default.target
Создав файл systemd, вы можете включить и запустить нашу службу приложений, которая гарантирует, что в случае остановки приложения или перезагрузки компьютера оно запустится снова самостоятельно.
Мы также можем быстро узнать, как работает наш сервис.
Если мы хотим узнать только, работает ли сервис, мы можем набрать:
Если мы захотим, мы можем быстро остановить любую службу, которую мы создали ранее.
Но поскольку наша служба настроена на запуск при включении компьютера, она запустится снова, даже если мы остановим ее вручную.
Чтобы предотвратить ее автоматический запуск, нужно использовать команду “disable”.
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 (планировщика заданий).
Далее нам нужно включить следующую строку.
* * * * * /path/to/keep_alive_script.sh
3. Supervisord
Supervisord – это система управления процессами для Linux, которая помогает отслеживать и контролировать процессы, обеспечивая их жизнеспособность даже при сбоях и перезагрузках системы.
Она выступает в роли супервизора для ваших приложений, гарантируя, что они всегда работают так, как нужно.
Чтобы установить Supervisord в Linux, используйте следующую команду, соответствующую вашему дистрибутиву Linux.
После установки необходимо создать файл конфигурации, чтобы указать Supervisord, какими процессами управлять.
Далее вам нужно добавить в файл следующую конфигурацию.
[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.
Эти команды позволяют проверять состояние процессов и вручную запускать, останавливать или перезапускать их при необходимости.
Заключение
Применяя эти методы, вы можете значительно повысить надежность ваших приложений в системах Linux.
Неважно, что вы выберете – systemd или пользовательские скриптов, главное – иметь проактивную стратегию для обнаружения сбоев и автоматического восстановления после них.
Это гарантирует, что ваши игры или приложения будут работать без сбоев, даже если ваш компьютер внезапно перестанет работать или его придется перезагрузить.
см. также:
- 🐳 Как запустить несколько служб в одном контейнере Docker
- 🐧 Как включить shell скрипт rc.local в systemd при загрузке системы Linux
- 🐧 Как установить ограничения ресурсов для процесса с Systemd в CentOS / RHEL 7 и 8
- 🐧 Как добавить пользовательский скрипт в systemd в CentOS / RHEL
- 🐳 Как запустить Docker / Podman контейнеры в качестве службы Systemd
- 🐧 Как запустить сервисы Systemd без пользователя root / sudo
В статье забыли про systemctl daemon-reload, без которого systemd не увидит новую службу до перезагрузки системы.
Спасибо за дополнение