Visitors have accessed this post 3406 times.

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

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

Visitors have accessed this post 3406 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)
Введено символов из возможных
Не отвечать

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

ТОП-8 книг по Docker
array(1) { [0]=> object(WP_Term)#11786 (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

Docker появился в 2013 году и до сих пор остается самым популярным инструментом контейнеризации. Так, например, он входит в ТОП-5 технологий, необходимых DevOps-инженеру, по мнению работодателей с hh. Для тех, кто предпочитает академический подход к изучению технологий, мы подготовили список книг, посвященных Docker.
Использование Docker. Моуэт...

7
0
23 октября 2020
Протокол SSH
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

Протокол SSH (Secure SHell) - один из основных и очень важных инструментов работы с Linux (тут надо отметить, что он может использоваться и для других платформ - OpenBSD, Windows, macOS). SSH применяется для зашифрованного соединения сервера и клиента путем создания защищенного соединения на удаленном компьютере. Используется прежде всего для...

2
0
25 мая 2020
Преимущества и недостатки DevOps Engineer
array(1) { [0]=> object(WP_Term)#11786 (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 есть свои сторонники, а есть и критики. И как любая методология, DevOps не является чудесной таблеткой или серебряной пулей, которая способна по волшебству решить все ваши проблемы. У нее есть и преимущества, и некоторые недостатки. О них мы и поговорим.
Преимущества DevOps
Как мы помним, методология DevOps...

2
0
28 августа 2020