Visitors have accessed this post 42647 times.

Как получить список заданий Cron в Linux

7
0
42647
25 сентября 2020 9:47
Автор: Rebrain Me
Linux

Visitors have accessed this post 42647 times.

Перевод статьи — https://linoxide.com/linux-how-to/how-to-list-cron-jobs-in-linux/

Для того чтобы Linux автоматически выполнял задачи по расписанию, которые в противном случае вам пришлось бы выполнять самостоятельно, например, запуск скриптов и выполнение определенных команд, мы используем инструмент под названием cron. В системах Linux утилита cron является единственным способом автоматизировать запуск скриптов через определенные промежутки времени.

Настройка Cron (Linux)

Чтобы настроить время и интервал запуска скрипта, используется команда crontab:

crontab -e

Флаг -e показывает, что необходимо отредактировать расписание запуска для текущего пользователя. После запуска команды вам нужно будет прописать правила в открывшемся временном файле. Обратите внимание на то, что правила будут запускаться только под тем пользователем, под которым вы их добавляли (если вам нужен запуск cron от пользователя root, то и правила нужно устанавливать от него).

Как добавить скрипт в cron

Чтобы задать конкретное время исполнения скрипта в cron, используется следующий синтаксис:

*минута *час *день *месяц *день_недели /путь к файлу

Для обозначения даты и времени используются цифры или * (означает, что нужно выполнять скрипт каждую единицу времени, например, если * заменяется час, то скрипт должен запускаться каждый час, если * используется вместо числового обозначения дня — то каждый день). Путь до файла следует указывать обязательно полностью, начиная с корневого файла.

Пусть, к примеру, наш скрипт cron запускает каждую неделю в среду в 14 часов 45 минут.

45 14 * * 3 /usr/local/ping/todo

Отсчет дней недели начинается понедельника, воскресенье считается седьмым или нулевым днем.

Если вам не важен конкретный момент запуска скрипта, но нужно, чтобы он был выполнен, например, во внерабочее время, можно указать интервал, воспользовавшись знаком -.

Запустим наш скрипт в каждый день недели каждый час в период с 00 до 5 часов утра.

0 00-5  * * * /usr/local/ping/todo

Или просто укажем интервал, через который нужно запускать скрипт. К примеру, каждые 30 минут (интервал обозначается при помощи разделителя /).

*/30 * * * *  /usr/local/ping/todo

Также при запуске cron можно использовать переменные, чтобы запустить скрипт.

  • @reboot — только 1 раз в момент загрузки;
  • @yearly, @annually — ежегодно;
  • @monthly — ежемесячно;
  • @weekly — еженедельно;
  • @daily, @midnight — ежедневно;
  •  @hourly — каждый час.

В этом случае команда для запуска нашего скрипта 1 раз в месяц будет выглядеть как

@monthly /usr/local/ping/todo

Теперь рассмотрим, как просматривать/получить список заданий, запланированных в списке crontab (это системный файл Linux с табличной структурой, где можно просмотреть все задачи cron, так называемые cron job).

Большинство Cron (например, Vixie-Cron — по умолчанию в Debian/Ubuntu, Cronie — по умолчанию в Fedora, Solaris Cron…) предоставляют список запланированных заданий cron для текущего пользователя через команду:

$ crontab -l

или для другого пользователя через:

# crontab -u username -l

Кроме того, вы можете посмотреть файлы расписания. Обычно они сохраняются в /var/spool/cron, например, для vcron следующий каталог /var/spool/cron/crontabs содержит все настроенные crontabs всех пользователей, кроме пользователя root. Он также может настраивать задания через общесистемный crontab, который находится в:

/etc/crontab

Чтобы просмотреть задания cron, выполните следующую команду 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, Ubuntu) существует каталог конфигурации в стиле cron.d для системных заданий cron:/etc/cron.d

Как всегда, каталог cron.d упрощает ведение записей конфигурации, которые являются частью разных пакетов.

Для удобства большинство дистрибутивов также предоставляет каталоги, в которых периодически выполняются привязанные/хранимые скрипты, например:

/etc/cron.daily

/etc/cron.hourly

/etc/cron.monthly

/etc/cron.weekly

Как получить список почасовых заданий Cron

Чтобы просмотреть почасовые задания cron (Linux), выполните команду:

$ ls -la /etc/cron.hourly/

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 можно с помощью следующей команды:

$ 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

Просмотреть список еженедельных заданий сron можно с помощью следующей команды:

$ 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.

От редакции

Если вам интересно посещать открытые онлайн-мероприятия по DevOps, Kubernetes, Docker, GitlabCI и др. и задавать вопросы в режиме реального времени, подключайтесь к каналу DevOps by REBRAIN*Анонсы мероприятий каждую неделю

Практикумы для специалистов по инфраструктуре и разработчиков — https://rebrainme.com.
Наш Youtube-канал — https://www.youtube.com/channel/UC6uIx64IFKMVmj12gKtSgBQ.

Агентство Fevlake, проектируем и поддерживаем IT-инфраструктуры с 2012 года — https://fevlake.com.

Комментарии (3)
Введено символов из возможных
Не отвечать

Вам также может понравится

Docker Swarm: практическое использование
array(1) { [0]=> object(WP_Term)#11537 (16) { ["term_id"]=> int(8) ["name"]=> string(6) "Docker" ["slug"]=> string(6) "docker" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(8) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(8) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(8) ["category_count"]=> int(8) ["category_description"]=> string(0) "" ["cat_name"]=> string(6) "Docker" ["category_nicename"]=> string(6) "docker" ["category_parent"]=> int(0) } } Docker

Автор - Максим Рязанов

Всех приветствую! В этой статье мы познакомимся с преимуществами overlay-сети, а также попрактикуемся с деплоем сервисов и приложений. Будет интересно!

Замечание к статье: для примера будут использоваться три виртуальные машины под управлением Debian 10, развернутые на моем компьютере. Все команды, перечисленные в...

4
2
20 ноября 2020
NMap
array(1) { [0]=> object(WP_Term)#976 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

Автор - Сергей Попов
Часть 1
Предистория
Наверняка, каждый смотрел фильмы про хакеров и задавался вопросом: откуда они знают, какие порты открыты в системе? Или как узнать, какие приложения запущены на сервере, не спрашивая об этом администратора? Вы можете сделать все это и даже больше вместе с небольшим инструментом под названием Nmap....

17
0
4 сентября 2020
Основы DevOps
array(1) { [0]=> object(WP_Term)#11537 (16) { ["term_id"]=> int(7) ["name"]=> string(6) "DevOps" ["slug"]=> string(6) "devops" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(7) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(19) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(7) ["category_count"]=> int(19) ["category_description"]=> string(0) "" ["cat_name"]=> string(6) "DevOps" ["category_nicename"]=> string(6) "devops" ["category_parent"]=> int(0) } } DevOps

Появление DevOps в 2009 (хотя, по некоторым источникам, это все-таки было в 2008) в корне поменяло процесс взаимодействия между отделами разработки и эксплуатации. До этого момента это были два совершенно разные подразделения со своими целями, задачами и KPI. Как следствие, они не слишком вникали в деятельность друга и часто возникала абсолютно...

4
0
25 сентября 2020