Как получить список всех запланированных заданий cron на моей машине?

Мой сисадмин установил кучу заданий cron на моей машине. Я хотел бы точно знать, что запланировано на какое время. Как я могу получить этот список?

Комментарии к вопросу (3)
Решение

В зависимости от того, как настроена ваша система 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/*) и, возможно, другие, которые я забыл.

Комментарии (7)

В большинстве программ (например, 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).

См. также:

Комментарии (8)

Вывести список всех кронов для данного пользователя.

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
Комментарии (3)