Мой системный администратор настроил кучу заданий cron на моей машине. Я хотел бы точно знать, что запланировано на какое время. Как я могу получить этот список?
Мой системный администратор настроил кучу заданий cron на моей машине. Я хотел бы точно знать, что запланировано на какое время. Как я могу получить этот список?
Ответы:
В зависимости от того, как настроена ваша система Linux, вы можете посмотреть:
/var/spool/cron/*
(пользователь crontabs)/etc/crontab
(общесистемный crontab)также многие дистрибутивы имеют:
/etc/cron.d/*
Эти конфигурации имеют тот же синтаксис, что и /etc/crontab
/etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
,/etc/cron.monthly
Это просто каталоги, которые содержат исполняемые файлы, которые выполняются ежечасно, ежедневно, еженедельно или ежемесячно для каждого имени каталога.
Кроме того, у вас могут быть рабочие места (чек /var/spool/at/*
), анакрон ( /etc/anacrontab
и /var/spool/anacron/*
) и, возможно, другие, которые я забыл.
/etc/cron.daily
. Как работает этот daily
файл? Во сколько будут выполняться ежедневные задания? На моей машине они, кажется, бегают около полудня, но он хотел бы рассказать моему сисадмину, как вместо этого изменить это на полночь.
/etc/crontab
, например, в моей системе Ubuntu это: 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
что означает 6:25 утра.
cronie
демон заботится о тех, кто использует конфигурацию в /etc/anacrontab
.
/var/cron
тоже.
С большинством Crons (например, Vixie-Cron - по умолчанию в Debian / Ubuntu, Cronie - по умолчанию в Fedora, Solaris Cron ...) вы получаете список запланированных заданий cron для текущего пользователя через:
$ crontab -l
или для другого пользователя через
# crontab -l -u juser
Чтобы получить crontabs для всех пользователей, вы можете перебрать всех пользователей и вызвать эту команду.
Кроме того, вы можете посмотреть файлы спула. Обычно они сохраняются в /var/spool/cron
, например, для следующей директории vcron
/var/spool/cron/crontabs
содержит все настроенные crontabs всех пользователей - кроме пользователя root, который также может настраивать задания через общесистемный crontab, расположенный по адресу
/etc/crontab
С помощью cronie (по умолчанию в Fedora / CentOS) существует .d
каталог конфигурации стилей для системных заданий cron:
/etc/cron.d
(Как всегда, .d
каталог упрощает ведение записей конфигурации, которые являются частью разных пакетов.)
Для удобства большинство дистрибутивов также предоставляют каталоги, в которых периодически выполняются связанные / хранимые сценарии, например:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
Своевременное выполнение этих сценариев обычно осуществляется с помощью run-parts
записей в системном crontab или через anacron .
С помощью Systemd (например, в Fedora, CentOS 7, ...) периодическое выполнение задания может быть дополнительно сконфигурировано через блоки таймера . Включенные системные таймеры могут отображаться через:
$ systemctl list-timers
Обратите внимание, что пользователи помимо root могут также запускать экземпляры systemd пользователей, на которых настроены таймеры. Например, в Fedora по умолчанию пользовательский экземпляр systemd запускается для каждого пользователя, который в данный момент вошел в систему. Их можно узнать с помощью:
$ ps aux | grep 'systemd[ ]--user'
Эти пользовательские таймеры могут быть перечислены через:
$ systemctl --user list-timers
Альтернативой выдаче list-timers
команды является поиск файлов модулей таймера (pattern:) *.timer
и символических ссылок на них в обычных каталогах конфигурации system и user systemd:
$ find /usr/lib/systemd/ /etc/systemd -name '*.timer'
$ find /home '(' -path '/home/*/.local/share/systemd/user/*' \
-o -path '/home/*/.config/systemd/*' ')' \
-name '*.timer' 2> /dev/null
(Как и в случае с обычными сервисными модулями, модуль таймера включается путем создания символической ссылки в правильном каталоге конфигурации systemd.)
Смотрите также:
crontab -l -u root
(потому что те cronjobs, которые я хочу знать о run root
), и он говорит, что у меня нет привилегий для использования -u
.
root
пользователь.
cronie
как поставляется в Fedora и RHEL6, не ссылаются на них /etc/crontab
, а используют /etc/anacrontab
. Я могу ошибаться по поводу любых реальных реализаций, которые не ссылаются на них ни в одном файле конфигурации. (Но тогда я тоже не понизил голосование .... Я просто говорю.)
Перечислить все кроны для данного пользователя.
crontab -u имя пользователя -l;
Чтобы перечислить все кроны для всех пользователей
Запустите его как супер пользователь
#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do
crontab -l -u $user;
done
root
илиapache
или любых других , но один должны использовать/etc/crontab
или (лучше, в большинстве дистрибутивов)/etc/cron.d
и/etc/cron.[timeframe]
.