Перейти к содержимому

Crontab где лежит файл

  • автор:

Re: Гже хранится crontab файл юзера?

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.

Похожие темы

  • Форум crontab для отдельных юзеров (2015)
  • Форум crontab (2013)
  • Форум Crontab (2009)
  • Форум crontab. (2002)
  • Форум crontab (2004)
  • Форум crontab (2001)
  • Форум crontab (2005)
  • Форум crontab (2005)
  • Форум crontab (2005)
  • Форум crontab (2002)

Настройка задач 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 при загрузке системы.

Назад Начало Вперед
Автоматизация задач Вверх Anacron

Где хранятся задания cron?

Нужно добавить много однотипных cron-задач. Соответственно вручную через панель управления делать это не слишком охота. Может они хранятся в каком-то файле, который можно скачать, подправить в notepad, залить обратно?

  • Вопрос задан более трёх лет назад
  • 53476 просмотров

Комментировать
Решения вопроса 1

marrk2

Оптимус Пьян @marrk2 Автор вопроса
Правильный ответ /var/spool/cron
Ответ написан более трёх лет назад
Нравится 14 6 комментариев

это не самый корректный способ редактирования заданий для cron поскольку в этой директории хранятся
1. в CentOS — по одному файлу на пользователя с его заданиями, которые он добавил с помощью команды crontab
2. с Debian/Ubuntu — папки для каждого пользователя
Настоятельно не рекомендую влезать в эту директорию и править что-то там руками. Это все равно, что править файл /etc/sudoers без visudo

marrk2

Оптимус Пьян @marrk2 Автор вопроса

Дмитрий Вапельник: ну да у меня CentOS там по 1 файлу на пользователя. А что делать если задания надо оптом добавить или убрать?

Дмитрий: если вы имеете права рута, то используйте директорию /etc/cron.d

marrk2

Оптимус Пьян @marrk2 Автор вопроса
Дмитрий Вапельник: но в ней же нет заданий.

Дмитрий: если их там нет, то это не значит, что их туда нельзя добавить. задания добавляюсь в файлы с описанием заданий в виде
00 01 * * * rusty /home/rusty/rusty-list-files.sh
[schedule] [user] [command]
удобство в том, что Вы можете из коммандной оболочки bash (прямо из баш-скрипта) копировать-удалять подготовленные файлы заданий
в случае же если Вам руками можно/нужно редактировать задания для cron, то лучше использовать crontab
на самом деле можно делать как-угодно и как удобно, но советую делать так и опыт показывает, что удобнее телать так

А какие правам на файл с заданиями должен быть?
Ответы на вопрос 4

в Unix задачи cron-а лежат в нескольких местах:
1. /etc/cron.d — здесь можно создавать файлы с заданиями крону, которые он будет загружать и исполнять по указанному расписанию. в этих файлах нужно указывать пользователя, от имени которого будет исполнено задание
*/10 * * * * root /root/backup.db.sh
2. /etc/cron.daily , /etc/cron.hourly , /etc/cron.monthly , /etc/cron.weekly — здесь кладем скрипты, которые будут исполняться ежедневно, ежечасно, ежемесячно и еженедельно. это такие себе подготовленные расписания, которые подгружаются и исполняются в определенное время
3. crontab -e — исполнение этой команды с ключом откроет текстовый редактор для редактирования заданий крону текущего пользователя. будьте внимательны — эти задания относятся к текущему пользователю и будут исполняться от его имени
соответственно, самый просто способ для динамического редактирования заданий для крона — это манипуляция с заданиями в /etc/cron.d

Ответ написан более трёх лет назад
Комментировать
Нравится 8 Комментировать

FanatPHP

Чебуратор тега РНР

У тебя вопрос по панели управления для клиентов системы «Йа с понтом хостер-криворучко». Cpanel и вот это вот всё.

К тегу unix оно не имеет ни малейшего отношения.
потому что в юникс можно написать
crontab список_заданий.txt
и все загрузить.
А куда грузить в твоей панели — надо спрашивать пользователей панели, а не юникса.

Впрочем, в любом случае если у тебя там » много однотипных cron-задач», то ты все делаешь неправильно.

Использование CRON и команды crontab

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

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

При загрузке системы, запускается демон cron и проверяет очередь заданий at и заданий пользователей в файлах crontab. При запуске, демон cron сначала проверяет каталог /var/spool/cron на наличие файлов crontab, файлы crontab имеют имена пользователей, соответствующие именам пользователей из /etc/passwd Каждый пользователь может иметь только один файл crontab, записей в файле может быть несколько.

Другими словами — файлы crontab содержат инструкции для демона cron, который запустит задание(я) описаное в файле crontab. Все файлы crontab из каталога /var/spool/cron загружаются в память, одновременно с ними загружаются файлы из /etc/cron.d После этого демон cron загружает содержимое файла /etc/crontab При стандартных настройках, содержимое /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

Информация файла указывает, что:

  • содержимое каталога /etc/cron.hourly будет запускаться каждый час на первой минуте часа.
  • содержимое каталога /etc/cron.daily будет запускаться каждый день на второй минуте четвертого часа.
  • содержимое каталога /etc/cron.weekly будет запускаться каждое воскресенье на 22’ой минуте 4’го часа.
  • содержимое каталога /etc/cron.monthly будет запускаться каждый первый день месяца на 42’ой минуте 4’го часа.

SHELL=/bin/bash означает использовать для запуска команд /bin/bash , если переменная не указана, то значение будет взято из /etc/passwd для пользователя являющимся владельцем файла.

HOME=/ корневой каталог для пользователя (параметр не обязательный) При необходимости доступа к специальным свойствам интерпретатора, значения переменных SHELL и HOME можно изменить, не зависимо от того, что прописано в /etc/passwd

MAILTO=root означает кому отсылать сообщение о результате работы команд.

Все содержимое из этих каталогов будет запускаться с правами доступа пользователя root и файлы должны иметь права доступа на «выполнение» (про права доступа читай статью http://rst.void.ru/texts/chmod.txt) Поэтому перед размещением файлов в одном из этих каталогов необходимо убедиться, что сценарии не насесут вред системе.

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

Как отмечалось выше, размещение файлов для cron в каталогах

/etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly

доступно только пользователю root, для использования файлов crontab пользователями, нужно использовать команду crontab. Команда служит для создания, изменения и добавления файла для демона cron

Пример

Рассмотрим пример создания файла crontab для пользователя user ,домашняя директория /home/user

Задача: запускать каждую минуту файл /home/user/mail, который будет отправлять почту

#содержимое файла mail (файл должен быть с правами на запуск! например -rwxr-xr-x) #!/bin/bash mess="test cron" echo "$mess" |mutt -s "subj" -m application/octet-stream bob@server.ru

1.Создаем временный файл /home/user/test содержимое файла test такое:

SHELL=/bin/bash MAILTO=user 0-59 * * * * /home/user/mail

2. Запускаем в терминале команду crontab /home/user/test

Все. После этого в каталоге /var/spool/cron будет создан файл «user» примерно с таким содержимым

# DO NOT EDIT THIS FILE - edit the master and reinstall. # (/home/user/test installed on Mon Mar 29 02:31:34 2004) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) SHELL=/bin/bash MAILTO=user 0-59 * * * * /home/user/mail

и файл /home/user/mail будет запускаться демоном cron каждую минуту.

Доступ в каталог /var/spool/cron непривилегированому пользователю закрыт, что бы посмотреть юзером «user» есть ли у него файл crontab ,достаточно набрать команду crontab -l , если файл существует-будет показано его содержимое.

Для удаления файла используется команда crontab -r

Для редактирования crontab -e

Для управления файлами crontab пользователем «root» используется синтаксис:

------------------------- crontab -u user_name file -создание файла crontab ------------------------- из файла "file" для юзера "user_name"

-u означает чей crontab будет обработан, Если опция не задана, то будет обработан crontab того пользователя, который запустил команду crontab.

------------------------- crontab -u user_name -l -просмотр файла crontab ------------------------- юзера "user_name" ------------------------- crontab -u user_name -r -удаление файла crontab ------------------------- юзера "user_name" ------------------------- crontab -u user_name -e -редактирование файла crontab ------------------------- юзера "user_name" используя редактор, заданный переменной окружения VISUAL или EDITOR

Формат и значения полей

Каждая команда в пользовательском файле crontab занимает одну строку и состоит из шести полей. Пользовательские файлы crontab находятся в каталоге /var/spool/cron

Общий формат команды:

------------------------------------------------ минута час день_месяца месяц день_недели команда ------------------------------------------------ Допустимые значения: минута от 0 до 59 час от 0 до 23 день_месяца от 1 до 31 месяц от 1 до 12 (можно три буквы из названия месяца, регистр не имеет значения от jan до dec) день_недели от 0 до 6 (0 это воскресенье, можно писать от sun до sat)

Каждое из полей даты и времени может быть обозначено символом * ,будет соответствовать любому возможному значению. Для этих полей можно указывать диапазоны значений, разделенных дефисом, например:

* 5 4-10 0-3 * echo "HELLO" -печать HELLO в 5:00 на 4,5,6,7,8,9,10 дни января, февраля, марта и апреля
* */2 * * sat echo "HELLO" -печать HELLO каждый четный час, каждую субботу

равнозначная предыдущему примеру запись (списком)

* 0,2,4,6,8,10,12,14,16,18,20,22 * * sat echo "HELLO" -печать HELLO каждый четный час, каждую субботу

то же самое с указанием диапазона

* 0-23/2 * * sat echo "HELLO" -печать HELLO каждый четный час, каждую субботу 59 23 31 dec * echo "Happy new year" -без комментариев :), поздравит с новым годом

Для отладки задания cron, можно перенаправить результат в файл

0-59 * * * * /home/user/mail 2>/tmp/tmp.cron

Если при запуске команды /home/user/mail возникнут ошибки, то они будут записаны в файл /tmp/tmp.cron и вы всегда сможете узнать причину. В случае перенаправления вывода в файл, письмо, юзеру указаному в переменной MAILTO отправлено не будет.

Посмотреть информацию о всех командах запускаемых демоном cron можно в каталоге /var/log называются cron, cron1 и т.д.

В файле /var/log/cron записано время запуска всех заданий cron за предыдущий день

Mar 29 04:03:00 rst CROND[4434]: (user) CMD (/home/user/mail) Mar 29 04:03:59 rst CROND[4493]: (user) CMD (/home/user/mail) Mar 29 04:05:00 rst CROND[4507]: (user) CMD (/home/user/mail) Mar 29 04:06:00 rst CROND[4549]: (user) CMD (/home/user/mail)

В остальных файлах cron1,cron2 находится подобная информация, но более старая чем в cron

Вот практически и все, что требуется знать для использования cron и crontab.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *