====== Планирование выполнения заданий в Linux ======
===== Примеры периодических задач =====
* [[Сервис ротации журналов]]
* [[Управление ПО в Linux]] (автоматическое обновление)
* [[Резервное копирование]]
===== Сервис cron =====
* [[https://ru.wikipedia.org/wiki/Cron|cron - Материал из Википедии]]
* [[https://stackoverflow.com/questions/9049460/cron-jobs-and-random-times-within-given-hours|Cron jobs and random times, within given hours]]
* [[Коды завершения#Простая система мониторинга]]
* Сервис Git [[Сервис Git#Пример с использованием cron]]
* Команда tar [[Команда tar#Сценарий архивирования каталогов с использованием ssh]]
* [[Сервис Ansible#ansible-pull]]
$ crontab -e
$ crontab -l
# m h dom mon dow command
#5-59/10 * * * * /etc/backup.sh # crontab from root
*/5 * * * * test $(LANG= top -b -n 1 | grep Cpu | cut -d':' -f2 | cut -d. -f1) -gt 60 && ( date; ps awux ) >> /tmp/ps_cpu_hi.log
$ ls /var/spool/cron/
$ crontab -r
===== Скрипт run-parts =====
# more /etc/crontab
...
# !!!! Don't work with .sh !!!!
# mv /etc/mybackup.sh /etc/cron.daily/mybackup
# run-parts --report /etc/cron.daily
===== Система anacron =====
* [[https://ru.wikipedia.org/wiki/Anacron|асинхронный или анахроничный cron]]
# cat /etc/crontab
# apt install anacron
# man anacrontab
# cat /etc/anacrontab
...
# start anacron
# ls /var/spool/anacron
===== Systemd timers =====
* [[https://habr.com/ru/companies/ruvds/articles/512868/|Использование таймеров systemd вместо заданий cron]]
* [[https://wiki.archlinux.org/title/Systemd/Timers]]
* [[Let's Encrypt для внутренних сайтов]]
# systemctl list-timers
# cat /etc/systemd/system/mybackup.service
[Unit]
Description=My Backup
After=network.target
[Service]
Type=oneshot
ExecStart=/etc/mybackup.sh
# systemctl start mybackup.service
# systemd-analyze calendar "*-*-* 3:45:00"
# cat /etc/systemd/system/mybackup.timer
[Unit]
Description=Timer for My Backup
[Timer]
OnCalendar=*-*-* *:*:00
#OnCalendar=*-*-* 03:45:00
#OnCalendar=Sat *-*-* 03:45:00
#OnCalendar=*-*-1 03:45:00
#Persistent=true
Unit=mybackup.service
[Install]
WantedBy=timers.target
# systemctl daemon-reload
# systemctl enable mybackup.timer --now
# journalctl -u mybackup.timer
# journalctl -u mybackup.service