====== Планирование выполнения заданий в 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