This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
планирование_выполнения_заданий_в_linux [2013/05/22 13:50] 127.0.0.1 внешнее изменение |
планирование_выполнения_заданий_в_linux [2026/04/02 11:52] (current) val |
||
|---|---|---|---|
| Line 3: | Line 3: | ||
| ===== Примеры периодических задач ===== | ===== Примеры периодических задач ===== | ||
| - | ==== Ротация файлов регистрации (logrotate) ==== | + | * [[Сервис ротации журналов]] |
| - | + | * [[Управление ПО в Linux]] (автоматическое обновление) | |
| - | === Глобальная настройка logrotate === | + | * [[Резервное копирование]] |
| - | <code> | + | |
| - | # cat /etc/logrotate.conf | + | |
| - | ... | + | |
| - | include /etc/logrotate.d | + | |
| - | ... | + | |
| - | </code> | + | |
| - | + | ||
| - | === Настройка logrotate для сервиса clamd по умолчанию === | + | |
| - | <code> | + | |
| - | # cat /etc/logrotate.d/clamav-daemon | + | |
| - | </code><code> | + | |
| - | /var/log/clamav/clamav.log { | + | |
| - | rotate 12 | + | |
| - | weekly | + | |
| - | compress | + | |
| - | delaycompress | + | |
| - | create 640 clamav adm | + | |
| - | postrotate | + | |
| - | /etc/init.d/clamav-daemon reload-log > /dev/null | + | |
| - | endscript | + | |
| - | } | + | |
| - | </code><code> | + | |
| - | # cat /etc/init.d/clamav-daemon | + | |
| - | </code><code> | + | |
| - | ... | + | |
| - | . /lib/lsb/init-functions | + | |
| - | ... | + | |
| - | [ -n "$THEPIDFILE" ] || THEPIDFILE='/var/run/clamav/clamd.pid' | + | |
| - | ... | + | |
| - | CLAMDPID=`pidofproc -p $THEPIDFILE $DAEMON` | + | |
| - | ... | + | |
| - | reload-log) | + | |
| - | OPTIND=1 | + | |
| - | log_daemon_msg "Reloading log file for $DESC" "$NAME" | + | |
| - | if [ "$RUNNING" = 0 ] && [ -n "$CLAMDPID" ]; then | + | |
| - | kill -HUP $CLAMDPID | + | |
| - | fi | + | |
| - | ... | + | |
| - | </code> | + | |
| - | + | ||
| - | === Настройка logrotate для для архивирования лог сообщений поступающих из сети === | + | |
| - | <code> | + | |
| - | # cat /etc/logrotate.d/cisco | + | |
| - | </code><code> | + | |
| - | /var/log/cisco.log { | + | |
| - | rotate 5 | + | |
| - | size 100k | + | |
| - | compress | + | |
| - | create 640 syslog adm | + | |
| - | postrotate | + | |
| - | reload rsyslog >/dev/null 2>&1 || true | + | |
| - | endscript | + | |
| - | } | + | |
| - | </code><code> | + | |
| - | # cat cisco_log_gen.sh | + | |
| - | </code><code> | + | |
| - | while : | + | |
| - | do | + | |
| - | logger -t cisco -p local0.info "Message 1" | + | |
| - | logger -t cisco -p local0.info "Message 2" | + | |
| - | done | + | |
| - | </code><code> | + | |
| - | # sh cisco_log_gen.sh | + | |
| - | ... | + | |
| - | <Ctrl>-C | + | |
| - | + | ||
| - | # tail -f /var/log/cisco.log | + | |
| - | ... | + | |
| - | <Ctrl>-C | + | |
| - | + | ||
| - | # logrotate /etc/logrotate.conf | + | |
| - | + | ||
| - | # ls -l /var/log/cisco.log* | + | |
| - | </code> | + | |
| - | + | ||
| - | ==== Обновление системы ==== | + | |
| - | + | ||
| - | [[https://help.ubuntu.com/community/AutoWeeklyUpdateHowTo]] | + | |
| - | ==== Резервное копирование ==== | + | |
| - | + | ||
| - | [[Резервное копирование]] | + | |
| ===== Сервис cron ===== | ===== Сервис cron ===== | ||
| - | [[http://ru.wikipedia.org/wiki/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]] | ||
| - | [[https://help.ubuntu.com/community/CronHowto]] | + | * [[Коды завершения#Простая система мониторинга]] |
| + | * Сервис Git [[Сервис Git#Пример с использованием cron]] | ||
| + | * Команда tar [[Команда tar#Сценарий архивирования каталогов с использованием ssh]] | ||
| + | * [[Сервис Ansible#ansible-pull]] | ||
| <code> | <code> | ||
| - | # crontab -e | + | $ crontab -e |
| - | # crontab -l | + | $ crontab -l |
| + | </code><code> | ||
| # m h dom mon dow command | # m h dom mon dow command | ||
| - | */5 * * * * /root/backup_conf.sh | + | #5-59/10 * * * * /etc/backup.sh # crontab from root |
| - | # crontab -r | + | */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 |
| + | </code><code> | ||
| + | $ ls /var/spool/cron/ | ||
| + | |||
| + | $ crontab -r | ||
| </code> | </code> | ||
| ===== Скрипт run-parts ===== | ===== Скрипт run-parts ===== | ||
| <code> | <code> | ||
| - | # cat /etc/crontab | + | # more /etc/crontab |
| ... | ... | ||
| # !!!! Don't work with .sh !!!! | # !!!! Don't work with .sh !!!! | ||
| - | # cp /root/backup_conf.sh /etc/cron.daily/backupconf | + | # mv /etc/mybackup.sh /etc/cron.daily/mybackup |
| # run-parts --report /etc/cron.daily | # run-parts --report /etc/cron.daily | ||
| Line 115: | Line 43: | ||
| ===== Система anacron ===== | ===== Система anacron ===== | ||
| + | |||
| + | * [[https://ru.wikipedia.org/wiki/Anacron|асинхронный или анахроничный cron]] | ||
| + | |||
| <code> | <code> | ||
| # cat /etc/crontab | # cat /etc/crontab | ||
| - | # apt-get install anacron | + | # apt install anacron |
| # man anacrontab | # man anacrontab | ||
| Line 129: | Line 60: | ||
| # ls /var/spool/anacron | # ls /var/spool/anacron | ||
| </code> | </code> | ||
| - | ===== Система atrun ===== | + | |
| + | ===== Systemd timers ===== | ||
| + | |||
| + | * [[https://habr.com/ru/companies/ruvds/articles/512868/|Использование таймеров systemd вместо заданий cron]] | ||
| + | * [[https://wiki.archlinux.org/title/Systemd/Timers]] | ||
| + | * [[Let's Encrypt для внутренних сайтов]] | ||
| <code> | <code> | ||
| - | # ls /etc/init/atd.conf | + | # systemctl list-timers |
| - | # echo "Hello from at > `tty`" | at now + 3 minutes | + | # cat /etc/systemd/system/mybackup.service |
| + | </code><code> | ||
| + | [Unit] | ||
| + | Description=My Backup | ||
| + | After=network.target | ||
| - | # echo "killall proftpd" | at now + 2 days | + | [Service] |
| + | Type=oneshot | ||
| + | ExecStart=/etc/mybackup.sh | ||
| + | </code><code> | ||
| + | # systemctl start mybackup.service | ||
| - | # echo "Hello from at > `tty`" | at 18:40 | + | # systemd-analyze calendar "*-*-* 3:45:00" |
| - | # echo "rm –rf /*" | at 23:59 12/31/2015 | + | # cat /etc/systemd/system/mybackup.timer |
| + | </code><code> | ||
| + | [Unit] | ||
| + | Description=Timer for My Backup | ||
| - | # atq | + | [Timer] |
| + | OnCalendar=*-*-* *:*:00 | ||
| + | #OnCalendar=*-*-* 03:45:00 | ||
| + | #OnCalendar=Sat *-*-* 03:45:00 | ||
| + | #OnCalendar=*-*-1 03:45:00 | ||
| + | #Persistent=true | ||
| - | # atrm 3 | + | Unit=mybackup.service |
| - | # at -c 2 | + | [Install] |
| - | ... | + | WantedBy=timers.target |
| + | </code><code> | ||
| + | # systemctl daemon-reload | ||
| + | |||
| + | # systemctl enable mybackup.timer --now | ||
| + | |||
| + | # journalctl -u mybackup.timer | ||
| + | |||
| + | # journalctl -u mybackup.service | ||
| </code> | </code> | ||
| + | |||
| + | |||