Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

26 - демон cron и команда crontab

Лекция



Сразу хочу сказать, что здесь никакой воды про демон cron, и только нужная информация. Для того чтобы лучше понимать что такое демон cron, crontab , настоятельно рекомендую прочитать все из категории Операционная система LINUX.

Демон cron (произносится “крон”) - это фоновый процесс который позволяет запускать на исполнение файлы в назначенное время. Если необходимо, чтобы с заданной периодичностью в системе запускался скрипт или программа, то это задача для cron. Сегодня мы рассмотрим как настраивать демон cron вручную, а также при помощи команды crontab.

Демон cron может запускать задачу не только для системы в целом, но и для отдельного пользователя. Файлы, которые описывают, что и когда будет запускаться для отдельного пользователя находятся в каталоге/var/spool/cron/crontabs/. Доступ к этому каталогу есть только у пользователя root.

Внутри каталога /var/spool/cron/crontabs/ для каждого пользователя создается текстовый файл по имени (логину) пользователя в котором и хранятся настройки. Например, если в системе есть пользователь test и он настраивал для себя cron, то будет создан файл с настройками - /var/spool/cron/crontabs/test. Пользовательtest прямого доступа к этому файлу не имеет. Как создается этот файл и редактируется мы поговорим позже (для этого используется команда crontab).

Для того, чтобы проверить запущен ли процесс cron выполните команду:

1
2
igor@adm-ubuntu:~$ ps ax | grep [c]ron
 1026 ?        Ss     0:00 cron

Если демон не запущен запустить его можно как и любой другой демон командой /etc/init.d/cron start, выполненной от имени администратора.

Демон cron работает в поминутном режиме. То есть задать время выполнения того или иного задания можно с точностью до одной минуты. Основной конфигурационный файл демона cron - это /etc/crontab. Основная часть файла -это таблица в 7 столбцов, каждая строка, которой описывает одно задание. Файлы которые описывают задания для демона cron, также часто называют crontab-файлами.

Пример файла /etc/crontab:

1
2
3
4
5
# 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 )

Каждой строке задаются значения 7-ми полей:

m - minute - минута - на какой минуте выполнять задание; диапазон значений - (0-59)
h - hour - час - в котором часу выполнять задание; диапазон значений (0-23)
dom - day of month - день месяца - в какие дни месяца выполнять задание; диапазон значений (1-31)
mon - month - месяц - в какие месяцы года выполнять задание; диапазон значений (1-12)
dow - day of week - день недели - в какие дни недели выполнять задание; диапазон значений (0-7, 0 и 7 - это воскресенье, дальше по порядку)
user - имя пользователь - пользователь от имени которого будет выполнено задание
command - исполняемая команда - команда, которая будет запущена на выполнение в указанное время.

В первых пяти полях можно указывать не только число из диапазона, но и диапазон чисел, перечисление чисел, диапазон с шагом. Об этом говорит сайт https://intellect.icu . Символ * - означает любое значение. Подробно почитать о значениях можно в man 5 crontab. Мы же рассмотрим несколько примеров.

10 6 * * * root myscript - запускать команду myscript каждый день, в 6 часов 10 минут утра.
0 5 1 * * root myscript - запускать команду myscript первого числа каждого месяца в 5 часов утра.
30 23 * * 1-5 root myscript - запускать команду myscript в рабочие дни (кроме субботы и воскресенья) в 23 часа 30 минут.
0 23 1,3,7,15 1,7 * root myscript - запустить команду myscript 1,3,7,15-го числа, месяца января и июля в 23 часа.
30 0-23/3 * * * root myscript - запускать команду каждые три часа. То есть первый запуск будет в 0:30, затем в 3:30 и т.д.
*/5 * * * * root myscript - запускать команду каждые 5 минут (*/5 - без пробелов).

Будьте внимательны с полями 3 и 5 - день месяца и день недели. Если числа есть в обеих полях, например, * 6 5 * 1 root myscript, то запись означает запускать задание в шесть часов 5-го числа каждого месяца или каждый понедельник, но не каждый понедельник 5-го числа.

crontab-файлы также могут содержаться в каталоге /etc/cron.d/, который просматривается демоном cron в процессе работы. Они могут иметь произвольные имена, но структура должна быть такая же как и у файла/etc/crontab. Обычно в этом каталоге хранятся задания различных служб и программ (файлы тогда называются по именам служб или программ).

Обычные пользователи также могут создавать свои crontab-файлы и редактировать их, если обратное не запрещено администратором. Для редактирования crontab-файлов предназначена команда crontab. Зарегистрируйтесь в системе под учетной записью обычного пользователя (например test) и наберите командуcrontab -e. Вы попадете в редактор (текстовый редактор по умолчанию в вашей системе) в котором нужно будет набрать задание. Обратите внимание, что в пользовательский crontab-файлах отсутствует поле user, так как оно вычисляется демоном cron из названия самого файла, который будет после редактирования сохранен в каталоге/var/spool/cron/crontabs/ под именем test. Наберите в нем строку с заданием, например:

29 12 * * * touch testfile

В первом втором поле укажите актуальное для вас время (на несколько минут больше текущего) и сохраните файл. Затем проверьте после назначенного времени, корневую директорию пользователя test и убедитесь, что файл был создан:

1
2
test@adm-ubuntu:~$ ls -l [0-9]*
-rw-r--r-- 1 test test 0 2010-01-11 12:16 testfile

Как видите файл testfile был создан. Также из под учетной записи администратора можете проверить, что был создан и файл /var/spool/cron/crontabs/test:

1
2
igor@adm-ubuntu:/etc/cron.d$ sudo ls -l /var/spool/cron/crontabs/
-rw------- 1 test crontab 266 2010-01-11 12:13 test

Если необходимо запретить пользователю создавать и редактировать crontab-файлы сделать это можно записав, имя его учетной записи в файл /etc/cron.deny. Если файла нет, то его нужно создать самому. Имена учетных записей записываются по одному в строке. Можно также использовать файл /etc/cron.allow. Подробнее описано в man crontab.

Служебные значения запуска задания по Cron

Иногда бывают моменты, когда нужно задать своеобразное время выполнения скрипта (например, только при загрузке). Для этого на помощь приходят зарезервированные слова:

 

Строка          Значение
------          -------
@reboot         Запуск при загрузке
@yearly         Запуск каждый год, "0 0 1 1 *".
@annually       (тоже самое, что @yearly)
@monthly        Запуск раз в месяц, "0 0 1 * *".
@weekly         Запуск раз в неделю, "0 0 * * 0".
@daily          Запуск раз в день, "0 0 * * *".
@midnight       (тоже самое, что @daily)
@hourly         Запуск раз в час, "0 * * * *".

Пример

@reboot   root    /usr/local/etc/rc.d/starts

Примечание.

Они работают в Linux/FreeBSD, но не работают в Solaris

Пожалуйста, пиши комментарии, если ты обнаружил что-то неправильное или если ты желаешь поделиться дополнительной информацией про демон cron Надеюсь, что теперь ты понял что такое демон cron, crontab и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Операционная система LINUX

Из статьи мы узнали кратко, но содержательно про демон cron
создано: 2014-09-13
обновлено: 2021-03-13
246



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Операционная система LINUX

Термины: Операционная система LINUX