Visitors have accessed this post 43009 times.

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

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

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

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

Инструменты DevOps
array(1) { [0]=> object(WP_Term)#11551 (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-инженера....

7
0
16 октября 2020
Чем HighLoad отличается от DevOps
array(1) { [0]=> object(WP_Term)#976 (16) { ["term_id"]=> int(9) ["name"]=> string(8) "HighLoad" ["slug"]=> string(8) "highload" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(9) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(3) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(9) ["category_count"]=> int(3) ["category_description"]=> string(0) "" ["cat_name"]=> string(8) "HighLoad" ["category_nicename"]=> string(8) "highload" ["category_parent"]=> int(0) } } HighLoad

Если вы зайдете на hh и напишите в поисковой строке HighLoad или «высокие нагрузки», результаты поиска вас удивят. «Чистых» вакансий по высоким нагрузкам практически нет. Как правило, задачи HighLoad упоминаются в обязанностях DevOps-инженеров (правда, чаще это матерые спецы уровня Senior) или backend-разработчиков. Поэтому очень часто происходит...

0
1
4 декабря 2020
Устанавливаем дистрибутив NixOS
array(1) { [0]=> object(WP_Term)#11550 (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

Автор - Юрий Изоркин

Краткая справка из Wikipedia

NixOS — дистрибутив Linux, созданный поверх менеджера пакетов Nix. Он использует декларативную конфигурацию и позволяет надежно обновлять систему. Предлагаются два основных направления: текущий стабильный выпуск и Unstable после последней разработки. 

Любая ОС Linux после установки требует...

7
2
21 августа 2020