Red hat linux cron

Red hat linux cron

Основной файл конфигурации cron, /etc/crontab , содержит следующие строки:

SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly

Первые четыре строки — это переменные, настраивающие среду окружения, в котором будут работать задачи cron. Значение переменной SHELL сообщает системе о том, какую оболочку использовать (в этом примере будет использована оболочка bash), а переменная PATH определяет пути, используемые для выполнения команд. Результат выполнения задач cron будет выслан по электронной почте пользователю, определённому в переменной MAILTO . Если в качестве значения переменной MAILTO задана пустая строка ( MAILTO=»» ), электронные письма отправляться не будут. Переменная HOME задаёт домашний каталог, используемый при выполнения команд или сценариев.

Каждая строка в файле /etc/crontab имеет следующий формат:

minute hour day month dayofweek command

minute — любое целое число от 0 до 59

hour — любое целое от 0 до 23

day — любое целое от 1 до 31 (день должен быть корректным, если указан месяц)

month — любое целое от 1 до 12 (или короткое название месяца, например: jan, feb и так далее)

dayofweek — любое целое от 0 до 7, где 0 или 7 означает Воскресенье (или короткое название дня недели, например: sun, mon и так далее)

command — команда, которая должны быть выполнена. Командой может быть как простая команда, например, ls /proc >> /tmp/proc , или команда запуска написанного вами специального сценария.

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

Дефис (-) между целыми числами обозначает диапазон чисел. Например, 1-4 означает целые числа 1, 2, 3 и 4.

Список значений, разделенных запятыми (,), обозначает перечень. Например, перечисление 3, 4, 6, 8 означает четыре указанных целых числа.

Косая черта (/) используется для определения шага значений. Целочисленное значение может быть пропущено в диапазоне, если после диапазона указать / целое > . Например, значение минут 0-59/2 , определяет, что будет пропущена каждая вторая минута. В качестве шага значений также может быть указана звёздочка. Например, значение месяца */3 определяет, что будет пропущен каждый третий месяц.

Любые строки, начинающиеся с символа решетки (#), являются комментариями, и не обрабатываются.

Пример 22-1. Примеры файлов crontab

# record the memory usage of the system every monday # at 3:30AM in the file /tmp/meminfo 30 3 * * mon cat /proc/meminfo >> /tmp/meminfo # run custom script the first day of every month at 4:10AM 10 4 1 * * /root/scripts/backup.sh

Как видно из файла /etc/crontab , в нём используется сценарий run-parts , чтобы запускающий сценарии в каталогах /etc/cron.hourly , /etc/cron.daily , /etc/cron.weekly и /etc/cron.monthly соответственно ежечасно, ежедневно, еженедельно и ежемесячно. Файлы в этих каталогах должны быть сценариями оболочки.

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

Демон cron каждую минуту ищет изменения в файле etc/crontab и каталогах etc/cron.d/ и /var/spool/cron . Если какие-либо изменения будут найдены, они загружаются в память. Таким образом, демон не нуждается в перезапуске при изменении файла crontab.

Другие пользователи (не root) также могут настраивать задачи cron, используя программу crontab . Все созданные пользователями файлы crontab, хранятся в каталоге /var/spool/cron и выполняются, от имени создавшего их пользователя. Чтобы создать файл crontab для пользователя, войдите в систему под его именем и введите команду crontab -e , чтобы отредактировать crontab пользователя, с помощью редактора, указанного в значении переменной окружения VISUAL или EDITOR . Этот файл использует тот же формат, что и /etc/crontab . Когда изменения фала crontab будут сохранены, этот файл crontab будет записан в соответствии с именем пользователя, под названием /var/spool/cron/ username .

Чтобы запустить службу cron, выполните следующую команду: /sbin/service crond start . Чтобы остановить её, выполните команду: /sbin/service crond stop . Рекомендуется, чтобы эта служба запускалась при загрузке системы. Обратитесь к Главе 8 за указаниями по настройке автоматического запуска службы cron при загрузке системы.

Читайте также:  Ssd кэш windows server

Источник

Глава 35. Автоматизация задач

В Linux вы можете настроить автоматический запуск заданий в определённый период времени, в определённый день или в момент, когда средняя нагрузка системы опускается ниже заданного значения. В Red Hat Enterprise Linux предварительно настроены важные системные задачи для поддержания актуального состояния системы. Например, база данных slocate, используемая командой locate, обновляется ежедневно. Системный администратор может использовать автоматизацию для выполнения периодического резервного копирования, наблюдения за системой, запуска собственных сценариев и т. д.

В Red Hat Enterprise Linux включены несколько утилит автоматизации задач: cron, at и batch.

35.1. Cron

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

Cron подразумевает, что система работает непрерывно. Если система не была включена в момент, на который была назначено задание, оно не будет выполнено. За информацией о назначении одноразовых заданий, обратитесь к разделу 35.2 Задания at и batch.

Для использования службы cron, необходимо, чтобы был установлен RPM-пакет vixie-cron и работала служба crond. Чтобы определить, установлен ли этот пакет, выполните команду rpm -q vixie-cron. Чтобы определить, работает ли служба, воспользуйтесь командой /sbin/service crond status.

35.1.1. Настройка заданий cron

Основной файл конфигурации cron, /etc/crontab, содержит следующие строки:

Первые четыре строки — это переменные, настраивающие окружение, в котором будут работать задачи cron. Переменная SHELL сообщает системе, какую оболочку использовать (в данном примере это оболочка bash), а переменная PATH определяет пути, используемые при выполнении команд. Результат выполнения задач cron будет выслан по электронной почте пользователю, определённому в переменной MAILTO. Если в качестве значения переменной MAILTO задана пустая строка (MAILTO=»»), электронные письма не отправляются. Переменная HOME задаёт домашний каталог, используемый при выполнении команд или сценариев.

Каждая строка в файле /etc/crontab представляет отдельное задание и имеет следующий формат:

minute — любое целое число от 0 до 59

hour — любое целое от 0 до 23

day — любое целое от 1 до 31 (день должен быть допустимым, если задан месяц)

month — любое целое от 1 до 12 (или краткое название месяца, например, jan, feb и т. д.)

dayofweek — любое целое от 0 до 7, где 0 или 7 обозначает воскресенье (или краткое название дня недели, например, sun или mon)

command — выполняемая команда (это может команда вроде ls /proc >> /tmp/proc или команда, запускающая дополнительный сценарий)

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

Дефис (-) между целыми числами обозначает диапазон чисел. Например, 1-4 обозначает набор целых чисел 1, 2, 3 и 4.

Последовательность значений, разделенных запятыми (,), обозначает список. Например, перечисление 3, 4, 6, 8 обозначает четыре указанных целых числа.

Прямая косая черта (/) используется для определения шага значений. Число в диапазоне может быть пропущено, если после диапазона указать / . Например, значение поля минут 0-59/2, определяет, что будет пропущена каждая вторая минута. В качестве шага значений также может быть указана звёздочка. Например, чтобы запускать задание раз в три месяца, в поле месяца можно использовать значение */3

Любые строки, начинающиеся с символа решетки (#), являются комментариями и не обрабатываются.

Как показывает пример файла /etc/crontab, сценарий run-parts запускает сценарии в каталогах /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/ и /etc/cron.monthly/ каждый час, день, неделю, месяц соответственно. Файлы в этих каталогах должны быть сценариями оболочки.

Если задание cron нужно выполнить по расписанию, но не ежечасно, ежедневно, еженедельно или ежемесячно, его можно добавить в каталог /etc/cron.d. Все файлы в этом каталоге имеют тот же синтаксис, что и /etc/crontab. Примеры заданий показаны в примере 35-1.

Пример 35-1. Пример заданий crontab

Другие пользователи (не root) также могут настраивать задачи cron, используя программу crontab. Все созданные пользователями файлы crontab хранятся в каталоге /var/spool/cron/ и выполняются от имени создавшего их пользователя. Чтобы создать файл crontab для пользователя, войдите в систему под его именем и введите команду crontab -e, чтобы отредактировать его файл crontab с помощью редактора, указанного в переменной окружения VISUAL или EDITOR. Этот файл имеет тот же формат, что и /etc/crontab. При записи изменений файла crontab этот файл сохраняется под названием /var/spool/cron/username, в соответствии с именем пользователя.

Читайте также:  Civilization 5 русификатор steam linux

Демон cron проверяет наличие изменений в файле /etc/crontab, каталоге /etc/cron.d/ и каталоге /var/spool/cron/ каждую минуту. Если обнаруживаются какие-либо изменения, они загружаются в память. Таким образом, демон не нуждается в перезапуске при изменении файла crontab.

35.1.2. Управление доступом к cron

Для ограничения доступа к cron используются файлы /etc/cron.allow и /etc/cron.deny. Формат списков управления доступом в обоих файлах прост — в каждой строке файла указывается одно имя пользователя. Пробельные символы в этих файлах не допускаются. Перезапускать демон cron (crond) после изменения файлов управления доступом не требуется. Файлы управления доступом обрабатываются каждый раз, когда пользователь пытается добавить или удалить задание cron.

Пользователь root может использовать cron, вне зависимости от того, какие пользователи перечислены в файлах управления доступом.

Если файл cron.allow существует, использовать cron разрешено только перечисленным в нём пользователям, а файл cron.deny игнорируется.

Если cron.allow не существует, пользователям, перечисленным в cron.deny, использовать cron не разрешается.

35.1.3. Запуск и остановка службы

Чтобы запустить службу cron, выполните команду /sbin/service crond start. Чтобы остановить её, выполните команду /sbin/service crond stop. Рекомендуется настроить запуск этой службы при загрузке системы. За подробными инструкциями по настройка автоматического запуска службы cron при загрузке системы обратитесь к главе 20 Управление доступом к службам.

Источник

Automate your Linux system tasks with cron

It might surprise the saltiest of system administrators to know that there is no Linux cron command. The cron daemon ( crond ) is a system-managed executable that runs in memory with which users may schedule tasks. The user command to work with the cron service is crontab (cron table). The crontab file is a simple text file that instructs the cron daemon to perform a task at a certain time or interval. Any user may schedule cron tasks or jobs on a system. The task runs under the user account from which it was created. In other words, if you create a cron task, it runs with your user account’s permissions. The same is true for any user on the system, including the root user.

Using cron

You can issue the man crontab command to see all possible options, but there are generally two that work for most users: -l (list) and -e (edit).

To see a list of your configured cron tasks, use:

I have no cron tasks running yet. To create one, I need to edit my crontab file:

Note: There is no file name or designation of any kind required when creating a crontab entry. Each user has only one crontab file and you add all tasks to it.

More Linux resources

There is nothing particularly special about the crontab editor except that, if you don’t have a specific editor defined with either the VISUAL or the EDITOR environment variable, then your editor is probably either vi or vim .

Note: If you don’t know how to use vi or vim , please refer to my article, An introduction to the vi editor.

Press the I key to enter INSERT mode and begin setting up your crontab entry. The crontab file has a specific syntax to it. See the image below:

Making it work

As you can see from the image, the positioning of your entries has meaning, and the entries are separated by spaces. An asterisk ( * ) means every or all, as in every minute or all hours, every day, and so on. In other words, the image currently illustrates a crontab entry for a script that will run every minute of every day. This practice, while rare, does exist in some instances. However, for most cron tasks, you will need to be more specific.

Читайте также:  Уменьшение яркости монитора windows 10

Note: Before setting up a cron task, run your script or command to see if you have any problems with permissions or paths.

It’s a good practice to provide the full path to any executable inside a script. Likewise, you should also provide the full path to executables or scripts in your crontab entries.

For example, if you have a script that needs to create a file from the dmesg command once a day at 1pm, your entry looks like the following:

And if you want to email this file to yourself, you can add an additional entry into your crontab :

Save the file by exiting it as you would exit vi or your default editor. There is nothing special you have to do to enable this edited crontab . The cron daemon checks for the existence of entries in the /var/spool/cron directory automatically. For example, my crontab is /var/spool/cron/khess and contains the two entries above.

The cron daemon runs as root so it can read the directory’s contents since only the root user has access to this directory. It would be a serious security violation for other users to access /var/spool/cron and read the crontab entries for other users on the system.

More examples

For the following examples, assume that you have a script, backup.sh , that you want to schedule on your system. You’ve placed all your system scripts in /etc/scripts , which is a directory that only root has access to.

To schedule the backup script to run every night at 2am, open the root user’s crontab :

then enter the following:

Save and exit the file.

Let’s try something a little more advanced. Schedule the backup script to run at 2am every Monday. Now, what does the crontab entry look like? Refer back to the crontab syntax image for hints:

The 1 in the fifth column instructs cron to run this script on Monday.

Rather than have your special backup script run every Monday, run it on the 15th of every month:

What if the backup script only backs up a single mission-critical directory? You want that directory’s contents backed up every 15 minutes. Here’s how that would look, which isn’t 100% intuitive:

The traditional method of setting this every 15-minute schedule looks like the following:

And similarly, if you want to run the script only Monday through Friday, your entry changes to:

As you can see, cron scheduling is easy once you understand the syntax. The only real stumbling blocks you might experience with cron are pathing, permissions, and timing. You have to think about how long a script requires to execute and produce output before scheduling another process that depends on it. Referring back to the dmesg script, you can see that you need to know how long the dmesg command requires to finish processing and writing to the dmesg.txt file before scheduling the next command, which is to email the dmesg.txt file to yourself.

Wrapping up

Typically, the way system administrators and other users automate processes on a Linux system is to create scripts that perform functions such as creating files, moving files, emailing information, performing backups, reporting on backups, etc. When you schedule those same scripts in cron, you’ve created true automation on your system. There are very few repetitive tasks that cannot be automated using cron and scripts. If you experience problems with automating tasks that require passwords or interactive sessions, use expect scripts to automate those. If you don’t know expect , watch Enable Sysadmin for future posts on the topic.

There are other ways to automate things in Linux in addition to cron . For example, the at command can be used to run a job at a specific time. You can also set tasks to run at specific times by using systemd, though the systemd timers system.

[Want to try out Red Hat Enterprise Linux? Download it now for free.]

Источник

Оцените статью