Как использовать таймер systemd для замены cron операционной системы?


В моем дистрибутиве Linux по умолчанию нет системы cron. Я могу установить его, но в качестве альтернативы, возможно ли заменить эту функциональность для Magento 2.3 таймером systemd? Если да, то каковы шаги?

Author: MountainX, 2020-02-09

1 answers

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

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

Создание таймера Systemd

Создайте файл в /home/client/crons/prod.sh

/usr/bin/php /var/www/mage/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/mage/var/log/magento.cron.log &
/usr/bin/php /var/www/mage/update/cron.php >> /var/www/mage/var/log/update.cron.log &
/usr/bin/php /var/www/mage/bin/magento setup:cron:run >> /var/www/mage/var/log/setup.cron.log &

Создайте файл по следующему пути /etc/systemd/system/client_magento_prod.service

[Unit]
Description=Clients Magento 2 Prod Cron Service

[Service]
Type=oneshot
ExecStart=/usr/bin/sh /home/client/crons/prod.sh
User=magefilesystemuser
Group=magefilesystemgroup

Создать файл по следующему пути /etc/systemd/system/client_magento_prod.timer

[Unit]
Description=Clients Magento 2 Prod Cron Timer

[Timer]
OnCalendar=*:0/5:0

[Install]
WantedBy=timers.target

Включите таймеры с помощью следующих команд

systemctl daemon-reload
systemctl enable client_magento_prod.timer
systemctl start client_magento_prod.timer

И проверить, какие таймеры активны /тайминги

systemctl list-timers
 3
Author: Sam, 2020-02-09 23:07:29