LINUX.ORG.RU
ФорумAdmin

Не до конца понимаю cron

 


0

1

Вот объясните, cron выполняет по таймингу 2 типа заданий: задания системы и задания пользователей.
Задания системы прописываются в файле /etc/crontab, задания пользователей через команду crontab, в какой файл задания, добавленные через команду, в результате записываются? Ещё есть скрипты в каталогах /etc/cron.hourly, /etc/cron.daily эти скрипты выполняются от рута, правильно? Ещё есть файл /etc/anacron, зачем он нужен если есть /etc/crontab ?
Как найти все задания всех пользователей, которые есть в системе?



Последнее исправление: Isur (всего исправлений: 1)

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

Anoxemian ★★★★★
()

Как найти все задания всех пользователей, которые есть в системе?

Какой дистрибутив? Fedora based: cat /var/spool/cron/*. Или для каждого пользователя crontab -lu $username

Ещё есть файл /etc/anacron, зачем он нужен если есть /etc/crontab ?

Затем, что cron запускает по расписанию, anacron — через определённый интервал, т.е. «через 10 минут после загрузки компьютера и далее каждый час», вместо «каждую пятую минуту каждого часа».

А вообще, RTFM||JFGI.

mogwai ★★★★
()

Задания системы прописываются в файле /etc/crontab, задания пользователей через команду crontab, в какой файл задания, добавленные через команду, в результате записываются?

Для vixie-cron это /var/cron/tabs/$LOGNAME (по дефолту чтение директории запрещено всем, кроме рута, свой crontab можно посмотреть через crontab -l, менять права на директорию не советую), для других реализаций cron может быть иначе.

mord0d ★★★★★
()
Последнее исправление: mord0d (всего исправлений: 1)

cron и anacron - это разные программы, следовательно у них разный принцип работы, разные конфиги.
Зачем каждая из них нужна лучше прочитать man, понять что какая умеет, тогда станет ясно в каких случаях какую целесообразнее применять.

Основные места конфигов cron:
- /etc/crontab, /etc/cron.d/* - это crontab-ы, в которых указывается пользователь, под которым нужно выполнять задачи. Можно считать это конфигами для администратора;
- /var/spool/cron/* или /var/spool/cron/crontabs/* - это crontab-ы, в которых пользователь в описании задач явно не указывается, он берётся из имени файла crontab-а. Они используются для запуска задач обычными пользователями.

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

через команду crontab, в какой файл задания, добавленные через команду, в результате записываются?

Записываются в /var/spool/cron/crontabs/USERNAME.

spirit ★★★★★
()

Вообще это всё очень зависит от дистрибутива и того каким вариантом cron вы пользуетесь. Более точная информация должна быть в «man название_вашего_cron».

spirit ★★★★★
()
Ответ на: комментарий от spirit

Вот нафига в современных дистрибутивах столько различных сущностей с одинаковыми функуциями...
А systemd-юниты типа .timer выполняют ту же функцию, что и задания cron?
На самом деле я всё это спрашиваю, чтобы понять каким способом в моей системе запускается logrotate и под каким пользователем.

Isur
() автор топика

anacron, зачем он нужен если есть

Он нужен затем, что если ты выключаешь комп на ночь, а у тебя в cron есть задание на 3 часа ночи, то оно никогда не будет выполнено. Anacron нужен чтобы гарантировать выполнение подобных заданий «когда-нибудь» когда комп будет включен (обычно через какое-то время после включения).

Ещё есть скрипты в каталогах /etc/cron.hourly, /etc/cron.daily эти скрипты выполняются от рута, правильно

Это просто для удобства, т.к. скрипт проще скопировать в каталог, чем парсить и добавлять запись в сам crontab, при установке пакетов, например. Да, они от рута выполняются.

в какой файл задания, добавленные через команду, в результате записываются

Обычно в /var/spool/cron/crontabs по имени пользователя.

no-such-file ★★★★★
()
Ответ на: комментарий от Isur

man systemd.timer

# systemctl cat юнит типа.timer
# systemctl enable юнит типа.timer
# systemctl start юнит типа.timer

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