Мой сисадмин установил кучу заданий cron на моей машине. Я хотел бы точно знать, что запланировано на какое время. Как я могу получить этот список?
В зависимости от того, как настроена ваша система linux, вы можете заглянуть в:
/var/spool/cron/*
(пользовательские кронтабы)/etc/crontab
(общесистемный кронтаб)также во многих дистрибутивах есть:
/etc/cron.d/*
.
Эти конфигурации имеют тот же синтаксис, что и /etc/crontab
.
/etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
, /etc/cron.monthly
.
Это просто каталоги, содержащие исполняемые файлы, которые выполняются ежечасно, ежедневно, еженедельно или ежемесячно, в соответствии с именем каталога.
Кроме того, вы можете иметь at jobs (проверьте /var/spool/at/*
), anacron (/etc/anacrontab
и /var/spool/anacron/*
) и, возможно, другие, которые я забыл.
В большинстве программ (например, Vixie-Cron - Debian/Ubuntu по умолчанию, Cronie - Fedora по умолчанию, Solaris Cron ...) вы получите список запланированных заданий cron для текущего пользователя через:
$ crontab -l
или для другого пользователя через
# crontab -l -u juser
Чтобы получить кронтабы для всех пользователей, можно перебрать всех пользователей и вызвать эту команду.
В качестве альтернативы, вы можете найти файлы спула. Обычно они хранятся в каталоге /var/spool/cron
, например, для vcron следующий каталог
/var/spool/cron/crontabs
содержит все настроенные кронтабы всех пользователей - кроме пользователя root, который также может настраивать задания через общесистемный кронтаб, расположенный по адресу
/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
в системном кронтабе или с помощью anacron.
С помощью Systemd (например, в Fedora, CentOS 7, ...) периодическое выполнение заданий может быть дополнительно настроено через timer units. Включенные системные таймеры могут быть отображены через:
$ systemctl list-timers
Обратите внимание, что у пользователей, помимо root, могут быть запущены пользовательские экземпляры systemd, в которых также настроены таймеры. Например, в Fedora, по умолчанию, пользовательский экземпляр systemd запускается для каждого пользователя, который в данный момент вошел в систему. Их можно узнать через:
$ ps aux | grep 'systemd[ ]--user'
Таймеры этих пользователей можно перечислить через:
$ systemctl --user list-timers
Альтернативой команде list-timers
является поиск файлов блоков таймеров (шаблон: *.timer
) и символических ссылок на них в обычных системных и пользовательских каталогах конфигурации 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 config).
См. также:
Вывести список всех кронов для данного пользователя.
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