Иногда приходится запускать скрипты, которые должны работать постоянно и самостоятельно восстанавливаться при падениях. Для этого есть systemd — стандартный менеджер служб в современных Linux. Вот как создать свой сервис.
- Перейди в каталог /etc/systemd/system
cd /etc/systemd/system- Создай файл с именем your-service.service и добавь в него следующее:
[Unit]
Description=Описание вашего сервиса
[Service]
User=www-php
WorkingDirectory=/home/www-php
ExecStart=php /home/www-php/mysite.com/script.php
Restart=always
[Install]
WantedBy=multi-user.targetГде можно использовать следующие параметры:
- [Unit] - основная часть службы
- Description - описание вашего сервиса
- After - указываем, после какого сервиса запускать службу (например, nginx.service, mysql.service). Можно указывать построчно несколько значений этого параметра.
- Requires=nginx.service - для запуска службы обязательно необходим сервис ngnix (указать любой другой)
- Wants=redis.service - какой сервис должен быть запущен при желании (не обязателен, чисто как доп. инфа)
- [Service] - блок с настройками сервиса
- User - от имени какого пользователя выполняется сервис
- Group - группа, от которой выполнять сервис
- WorkingDirectory - рабочая директория службы
- ExecStart - выполняемая команда, например, выполнение php скрипта (полный и точный путь к скрипту)
- Restart - указываем, что необходимо автоматически делать рестарт службы в случае отвала
- TimeoutSec=200 - время, сколько ждать перед запуском/остановкой сервиса
- OOMScoreAdjust=-100 - запрет на отключение сервиса, в случае нехватки памяти
- [Install] - параметры установки службы
- WantedBy - уровень запуска, многопользовательский режим
- Перезагрузи файлы службы:
sudo systemctl daemon-reload- Запусти свой сервис:
sudo systemctl start your-service.service- Проверь статус сервиса:
sudo systemctl status your-service.service- Чтобы включить/отключить сервис при каждой перезагрузке, используй команды:
sudo systemctl enable your-service.servicesudo systemctl disable your-service.serviceС systemd можно легко организовать постоянную работу скриптов и сервисов, контролировать их состояние и автоматизировать перезапуск. Это удобно и стабильно — именно то, что нужно для живых проектов на продакшене.
0 комментариев