В некоторых случаях вам необходимо производить постоянную работу, контроль и перезапуск скриптов в 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

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