В некоторых случаях вам необходимо производить постоянную работу, контроль и перезапуск скриптов в Linux. Особенно это бывает полезно, когда нужно чтобы скрипт работал не только постоянно, но и автоматически перезапускался в случае сбоя. На этот случай вы можете использовать systemd.
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.service
sudo systemctl disable your-service.service
Таким образом вы можете с легкостью добавить и настроить свой сервис, контролировать и перезапускать с его помощью свои скрипты.
0 комментариев