Чтобы linux автоматически выполнял задачи, которые в противном случае вам пришлось бы выполнять самостоятельно, например, запуск скриптов и выполнение определенных команд, мы используем инструмент под названием cron.
В системах Linux утилита cron является предпочтительным способом автоматизации запуска скриптов через определенные промежутки времени.
В этой статье мы рассмотрим, как просматривать / перечислять задания, запланированные в списке crontab.
С большинством Crons (например, Vixie-Cron – по умолчанию в Debian / Ubuntu, Cronie – по умолчанию в Fedora, Solaris Cron …) вы получаете список запланированных заданий cron для текущего пользователя через:
$ crontab -l
или для другого пользователя через
# crontab -u username -l
Кроме того, вы можете посмотреть файлы spool.
Обычно они сохраняются в /var/spool/cron, например для vcron следующий каталог /var/spool/cron/crontabs содержит все настроенные crontabs всех пользователей – кроме пользователя root, который также может настраивать задания через общесистемный crontab, расположенный по адресу:
/etc/crontab
Для просмотра выполните следующую команду less:
less /etc/crontab
Пример структуры crontab:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
На моем компьютере это выглядит так:
# /etc/crontab: system-wide crontab # Unlike any other crontab you don't have to run the `crontab' # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
С помощью cronie (по умолчанию в Fedora / CentOS) существует каталог конфигурации в стиле cron.d для системных заданий cron:
/etc/cron.d
Как всегда, каталог cron.d упрощает ведение записей конфигурации, которые являются частью разных пакетов.
Для удобства большинство дистрибутивов также предоставляют каталоги, в которых периодически выполняются связанные / хранимые скрипты, например:
/etc/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly
Как составить список почасовых Cron заданий
Чтобы просмотреть почасовые задания cron, выполните команду ниже
$ ls -la /etc/cron.daily/ total 72 drwxr-xr-x 2 root root 4096 Apr 24 20:46 . drwxr-xr-x 96 root root 4096 May 19 17:12 .. -rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder -rwxr-xr-x 1 root root 376 Apr 4 2014 apport -rwxr-xr-x 1 root root 15481 Apr 10 2014 apt -rwxr-xr-x 1 root root 314 Feb 18 2014 aptitude -rwxr-xr-x 1 root root 355 Jun 4 2013 bsdmainutils -rwxr-xr-x 1 root root 256 Mar 7 2014 dpkg -rwxr-xr-x 1 root root 372 Jan 22 2014 logrotate -rwxr-xr-x 1 root root 1261 Sep 23 2014 man-db -rwxr-xr-x 1 root root 435 Jun 20 2013 mlocate -rwxr-xr-x 1 root root 249 Feb 17 2014 passwd -rwxr-xr-x 1 root root 2417 May 13 2013 popularity-contest -rwxr-xr-x 1 root root 214 Mar 27 2017 update-notifier-common -rwxr-xr-x 1 root root 328 Jul 18 2014 upstart
Как перечислить еженедельные задания Cron
Чтобы перечислить еженедельные работы cron, запустите команду ниже
$ ls -la /etc/cron.weekly/ total 28 drwxr-xr-x 2 root root 4096 Apr 24 20:46 . drwxr-xr-x 96 root root 4096 May 19 17:12 .. -rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder -rwxr-xr-x 1 root root 730 Feb 23 2014 apt-xapian-index -rwxr-xr-x 1 root root 427 Apr 16 2014 fstrim -rwxr-xr-x 1 root root 771 Sep 23 2014 man-db -rwxr-xr-x 1 root root 211 Mar 27 2017 update-notifier-common
Как перечислить ежемесячные задания Cron
Это будет перечислять ежемесячные задачи cron
$ ls -la /etc/cron.monthly/ total 12 drwxr-xr-x 2 root root 4096 Apr 24 20:44 . drwxr-xr-x 96 root root 4096 May 19 17:12 .. -rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
Просмотр программных Cron заданий
Мы можем взглянуть на работу cron конкретных программ с помощью команды cat:
$ cd /etc/cron.daily/ $ ls -l total 60 -rwxr-xr-x 1 root root 376 Apr 4 2014 apport -rwxr-xr-x 1 root root 15481 Apr 10 2014 apt -rwxr-xr-x 1 root root 314 Feb 18 2014 aptitude -rwxr-xr-x 1 root root 355 Jun 4 2013 bsdmainutils -rwxr-xr-x 1 root root 256 Mar 7 2014 dpkg -rwxr-xr-x 1 root root 372 Jan 22 2014 logrotate -rwxr-xr-x 1 root root 1261 Sep 23 2014 man-db -rwxr-xr-x 1 root root 435 Jun 20 2013 mlocate -rwxr-xr-x 1 root root 249 Feb 17 2014 passwd -rwxr-xr-x 1 root root 2417 May 13 2013 popularity-contest -rwxr-xr-x 1 root root 214 Mar 27 2017 update-notifier-common -rwxr-xr-x 1 root root 328 Jul 18 2014 upstart $ cat update-notifier-common #!/bin/sh set -e [ -x /usr/lib/update-notifier/package-data-downloader ] || exit 0 # Try to rerun any package data downloads that failed at package install time. /usr/lib/update-notifier/package-data-downloader
Кроме того, вы можете задать «at» задания (/var/spool/at/ *), anacron (/etc/anacrontab и /var/spool/anacron/ *)
Правильное и своевременное выполнение этих скриптов осуществляется через записи частей выполнения в системном файле crontab или через anacron.
В systemd (в Fedora, CentOS 7 и т. д.) периодическое выполнение задания может быть дополнительно сконфигурировано через блоки таймера.
Включенные системные таймеры могут отображаться через:
$ systemctl list-timers
Мы увидели все каталоги по умолчанию, где вы можете найти задания cron в большинстве систем Linux.
Если у вас есть какие-либо вопросы или комментарии, пожалуйста, напишите их ниже в разделе комментариев.
См. также по теме:
- ⌚ Как создавать и управлять заданиями Cron в Linux
- ? Как запустить задание cron в определенные дни недели
- Что такое cron и как он используется в Linux
- Справочное руководство по Linux Crontab
- ? Как найти и удалить файлы старше определенного периода времени в Linux