Crontab параметры. Cron — запуск программ пользователя в указанное время. Crontab в панели управления Timeweb

Crontab параметры. Cron — запуск программ пользователя в указанное время. Crontab в панели управления Timeweb

MIN HOUR DOM MON DOW CMD

Таблица: Поля и допустимые диапазоны Crontab (синтаксис Linux Crontab)

1. Планирование задач в течение определённого времени

Основа использования cron – выполнение задач в определённое время, как показано ниже. Это будет выполнять скрипт полного резервного копирования (full-backup) 10 июня в 8.30.

Пожалуйста, обратите внимание, что поле времени использует 24-часовой формат, Так что 8 АМ – 8, 8 РМ – 20 часов.

30 08 10 06 * /home/developer/full-backup

  • 30 – 30-ая минута
  • 08 – 08 АМ
  • 10 – 10-й день
  • * – каждый день недели

2. Расписание задач для более частого выполнения (например, дважды в день)

Следующий скрипт использует дополнительное резервное копирование дважды в день каждый день. В этом примере выполняется дополнительное резервное копирование (incremental-backup) в 11:00 и в 16:00 каждый день. Значения через запятую в поле указывают, что команда должна быть выполнена в каждое указанное время.

00 11,16 * * * /home/developer/bin/incremental-backup

00 – 0-ая минута (начало часа) 11, 16 – 11 и 16 часов * - каждый день * - каждый месяц * - каждый день недели

3. Расписание работы в течение определённого интервала времени (например, только в будние дни)

Если вы хотите, чтобы подпрограммы выполнялись в течение каждого часа с определённым интервалом времени, используйте следующее.

Подпрограмма Cron для каждого дня в течение рабочих часов

Этот пример каждый день проверяет состояние базы данных (включая выходные) в течение рабочих часов с 9 утра до 6 вечера.

00 09-18 * * * /home/developer/bin/check-db-status

00 - 0-ая минута (начало часа) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (часы) * - каждый день * - каждый месяц * - каждый день недели

Подпрограмма Cron для каждого рабочего дня в течение рабочих часов

Этот пример проверяет состояние базы данных каждый рабочий день (кроме субботы и воскресенья) с 9 утра до 6 вечера.

00 09-18 * * 1-5 /home/ramesh/bin/check-db-status

00 - 0-ая минута (начало часа) 09-18 – 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 (часы) * - каждый день * - каждый месяц 1-5 - Понедельник, Вторник, Среда, Четверг и Пятница (каждую неделю)

4. Как просмотреть записи Crontab?

Просмотр текущих Crontab-файлов пользователя.

Чтобы просмотреть ваши файлы crontab-l из вышей учётной записи unix, проделайте следующее.

Developer@dev-db$ crontab -l @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space

Просмотр root записей crontab

Залогиньтесь в качестве root пользователя (su - root) и выполните crontab-l как показано ниже.

Root@dev-db# crontab -l no crontab for root

Чтобы посмотреть файлы других пользователей, залогиньтесь в качестве root пользователя и и используйте -u {имя пользователя} -l как показано ниже.

Root@dev-db# crontab -u username -l @monthly /home/username/monthly-backup 00 09-18 * * * /home/username/check-db-status

5. Как редактировать записи crontab?

Редактирование текущих пользовательских cron-записей.

Чтобы редактировать записи, используйте cronab -e как показано ниже. По умолчанию, будут редактироваться текущие записи crontab пользователя.

Developer@dev-db$ crontab -e @yearly /home/developer/centos/bin/annual-maintenance */10 * * * * /home/developer/debian/bin/check-disk-space ~ "/tmp/crontab.XXXXyjWkHw" 2L, 83C

Когда вы сохраните файл, он сохранит crontab и покажет следующее сообщение, где будет сказано, что crontab успешно изменён.

~ "crontab.XXXXyjWkHw" 2L, 83C written crontab: installing new crontab

Редактирование root записей crontab

Залогиньтесь как root пользователь (su - root) и сделайте crontab -e , как показано ниже.

Root@dev-db# crontab -e

Редактирование записей crontab-файла другого пользователя

Чтобы отредактировать запись crontab другого пользователя Linux, залогиньтесь в под root и используйте -u {имя пользователя} –е, как показано ниже.

Root@dev-db# crontab -u username -e @monthly /home/username/fedora/bin/monthly-backup 00 09-18 * * * /home/username/ubuntu/bin/check-db-status ~ ~ ~ "/tmp/crontab.XXXXyjWkHw" 2L, 83C

6. Выполнение Cron каждую минуту

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

Bash * * * * * CMD

* - означает возможную единицу – то есть, каждую минуту каждого часа в течение года. Кроме того, использование * напрямую, окажется более полезной функцией в следующих примерах.

Указание */5 в поле минут означает каждые 5 минут. Указание 0-10/2 в поле минут означает каждые 2 минуты в первых 10 минутах. Таким образом, данная условность может быть использована во всех 4 полях.

7. Запуск фоновых задач Cron каждые 10 минут

Используйте следующее, если хотите проверять место на диске каждые 10 минут.

*/10 * * * * /home/ramesh/check-disk-space

Эта задача выполняет указанную команду проверки диска каждые 10 минут на протяжении года. Но вам может потребоваться выполнение проверки только в рабочие часы или наоборот. Приведённые выше примеры показывают, как это сделать.

Вместо указания значений в 5 полях мы можем указать их, используя ключевое слово, как показано ниже.

Существуют особые условия, когда вместо 5 полей вы можете использовать @ и далее ключевое слово – такие как перезагрузка, полночь, ежегодно, ежечасно.

Специальные ключевые слова Cron и их значение

8. Расписание работы для первой минуты каждого года с использованием @yearly

Если вы хотите, чтобы cron задача выполнялись в первые минуты каждого года, то можете использовать ключевое слово @yearly , как это показано ниже. В стаком случае система будет выполнять ежегодное техническое обслуживание, используя скрипт ежегодного тех.обслуживания в 00:00 1 января каждого года.

@yearly /home/developer/red-hat/bin/annual-maintenance

9. Запуск задач каждый месяц с использованием ключевого слова @monthly

Оно схоже со словом @yearly , приведённым выше. Но команда выполняется ежемесячно. Команда будет выполнять резервное копирование в 00:00 первого числа каждого месяца.

@monthly /home/ramesh/suse/bin/tape-backup

10. Запуск задач каждый день с использованием @daily

Используя ключевое слово @daily , будет ежедневно создаваться лог-файл очистки журнала в 00:00 каждый день.

@daily /home/developer/arch-linux/bin/cleanup-logs "day started"

11. Как выполнить команду Linux после каждой перезагрузки, используя @reboot?

Используя ключевое слово @reboot , будет выполняться указанная команда каждый раз после загрузки системы.

@reboot CMD

13. 12. Как отключить/перенаправить исходящую почту Crontab, используя ключевое слово MAIL?

По умолчанию crontab отправляет выходные (output) задачи пользователю, который установил эту задачу. Если вы хотите перенаправить их другому пользователю, добавьте или обновите переменную MAIL в crontab, как показано ниже.

Developer@dev-db$ crontab -l MAIL="developer" @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space

Если вы хотите, чтобы почта вообще не отправлялась, т.е прекратить отправку выходных файлов crontab, добавьте или обновите переменную MAIL в crontab, как показано ниже.

13. Как выполнять задачи Linux Cron кажду секунду, используя Crontab

Вы не можете настроить выполнение cron на каждую секунду. Потому что минимальная единица выполнения cron – минута. В обычном сценарии нет необходимости запускать выполнение cron каждую секунду.

14. Указание переменной PATH в Crontab

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

Например, вместо указания /home/developer/tape-backup , если вы хотите указать только tape-backup , добавьте путь /home/developer к переменной PATH в crontab , как показано ниже.

Developer@dev-db$ crontab -l PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/developer @yearly annual-maintenance */10 * * * * check-disk-space

15. Установка Crontab из Cron-файла

Вместо прямого редактирования файла crontab вы можете добавить, все записи в cron-файл. Если в файле есть эти записи, вы можете выгрузить или установить их в cron, как показано ниже.

Примечание: Будет создан файл cron-file.txt в вашем crontab, который удалит прежние записи cron. Поэтому, пожалуйста, будьте внимательны при загрузке записей cron из cron-file.txt:

developer@dev-db$ crontab -l no crontab for developer $ cat cron-file.txt @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space developer@dev-db$ crontab cron-file.txt developer@dev-db$ crontab -l @yearly /home/developer/annual-maintenance */10 * * * * /home/developer/check-disk-space

Очень часто в Linux-подобных системах может потребоваться автоматизировать некоторые рутинные процессы. Для этого применяются специальные планировщики. Одним из наиболее известных из них является Cron, о настройках которого и пойдёт речь в этой статье.

Что представляет собой Cron?

Название программы образовано от греческого «хронос», означающего время. Что, собственно, логично. Задача демона — в определённые моменты выполнять записанные в него команды. Сам процесс реализации основан на проверке таблиц крона и сравнении их с и временем.

Файл crontab

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

Для каждого отдельного пользователя системы используется свой файл crontab.

Разные дистрибутивы Linux используют свои каталоги для хранения пользовательских настроек. Для RedHat это — var/ spool/cron. В Debian и Ubuntu это будет var/spool/cron/crontabs. И var/spool/cron/tabs в SUSE.

Список команд для управления crontab

Cron имеет набор специальных директив, с помощью которых можно управлять планировщиком. Применять их нужно в связке с crontab. Вот небольшой список:

  • -u имя_пользователя. Устанавливает пользователя, с задачами и настройками которого будут производиться дальнейшие действия. Если опустить данный ключ, то будет задан пользователь по умолчанию.
  • -l. Выведет текущий список задач.
  • -e. Производит запуск редактора для планировщика задач.
  • -r. Удаляет все имеющиеся задачи из списка.

Формат задачи

Как было сказано выше, настройка Cron заключается в задании команд в специальном файле. Выглядит это как простая запись, состоящая из шести колонок:

  • в первой указывается количество минут. Доступный интервал — от 0 до 59. Можно использовать несколько значений, диапазон и специальные символы;
  • вторая колонка — часы. Могут использоваться значения от 0 до 23;
  • далее — день. Здесь можно указать число от 1 до 31;
  • четвёртый — месяц. Минимальное значение 1, максимальное — 12;
  • пятая — неделя. 0 или 7 соответствует воскресенью;
  • последней идёт сама выполняемая команда.

Как было упомянуто, в файле можно указать специальные символы, «*» или «/». Например, такая запись — 23 */2 *** echo «Выполнить» означает, что каждый чётный час и 23 минуты будет отображаться надпись «Выполнить».

Особенности файла crontab

При настройке Cron необходимо помнить, что он обладает специфичными свойствами, которые стоит учитывать при конфигурировании:

  • каждый файл обязательно должен завершаться пустой строкой, иначе последний пункт может быть проигнорирован, а иногда и целиком весь файл;
  • файлы, размещённые в каталогах, имеющих в имени точку, также будут проигнорированы планировщиком;
  • в файлах настройки можно использовать символы решётки «#». Они применяются для того, чтобы отметить строки с комментариями. Это очень удобно для описания запланированных задач и команд.

Дополнительные переменные

При настройке Cron можно применять в командах специальные значения и сокращения. Например, для указания дня недели можно использовать следующий список:

  • sun — воскресенье;
  • mon — понедельник;
  • tue — вторник;
  • wed — среда;
  • thu — четверг;
  • fri — пятница;
  • sat — суббота.

Для месяцев также имеются отдельные буквенные значения — jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.

Также для настройки Cron имеются отдельные переменные, способные заменить целые строки команд:

  • @reboot. Команда будет стартовать каждый раз при запуске компьютера;
  • @yearly. Данная задача будет запускаться один раз в год. Эквивалентная ей запись в числовом виде может быть такой: 0 0 1 1 *. Ее синоним ещё можно записать как @annually;
  • @monthly. Как можно догадаться из названия, данная переменная производит запуск команды раз в месяц. Ее числовой аналог — 0 0 1 * *;
  • @weekly. Данная переменная будет запускаться каждую неделю;
  • @dayly. Раз в день;
  • @midnight. Запуск будет произведён в полночь;
  • @hourly. Каждый час.

Настройка Cron в Centos 7

Сам процесс установки и конфигурирования мало чем отличается от других схожих Linux дистрибутивов. Перед настройкой Cron в Centos необходимо установить пакет cronie в систему. Сделать это можно с помощью команды yum install cronie. Для создания файла с инструкциями нужно выполнить в терминале crontab -e. Все системные настройки Cron будут сохраняться по адресу /var/spool/cron/имя пользователя.

Несколько полезных примеров для создания часто повторяющихся задач

Можно провести настройку Cron таким образом, чтобы охватить практически все потребности любого пользователя.

  • 00 09-17 * * 1 - 5 /путь/ к команде/ крона. Данная команда будет автоматически выполнять запланированное действие каждый рабочий день с 9 до 5 часов каждую первую минуту;
  • 00 9,17 * * * /путь/ к команде/ крона. В этом примере происходит исполнение команды два раза в день. Первый в 9, второй - в 5 часов. Знак «*» показывает, что команда будет выполняться каждый день, месяц и год;
  • Также не стоит забывать и про символьные переменные. Например, @monthly будет выполнять задачу каждый месяц в первую минуту первого часа первого дня. А @daily будет запускаться каждый день.


© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows