How can get a list of all scheduled cron jobs on my machine?
My sysadmin has set up a bunch of cron jobs on my machine. I’d like to know exactly what is scheduled for what time. How can I get that list?
This isn’t the answer to the question, but just a note on best practices. One can configure these as per-user cron jobs for root or apache or whatever, but one should use /etc/crontab or (better, in most distros) /etc/cron.d and /etc/cron.[timeframe] .
I have posted a script which automates this to a useful degree at: — stackoverflow.com/questions/134906/… It’s not perfect but probably covers 90% of the needs. It is a good example of what not to write in bash.
4 Answers 4
With most Crons (e.g. Vixie-Cron — Debian/Ubuntu default, Cronie — Fedora default, Solaris Cron . ) you get the list of scheduled cron jobs for the current user via:
To get the crontabs for all users you can loop over all users and call this command.
Alternatively, you can look up the spool files. Usually, they are are saved under /var/spool/cron , e.g. for vcron following directory
contains all the configured crontabs of all users — except the root user who is also able to configure jobs via the system-wide crontab, which is located at
With cronie (default on Fedora/CentOS), there is a .d style config directory for system cron jobs, as well:
(As always, the .d directory simplifies maintaining configuration entries that are part of different packages.)
For convenience, most distributions also provide a directories where linked/stored scripts are periodically executed, e.g.:
/etc/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly
The timely execution of those scripts is usually managed via run-parts entries in the system crontab or via anacron.
With Systemd (e.g. on Fedora, CentOS 7, . ) periodic job execution can additionally be configured via timer units. The enabled system timers can be displayed via:
Note that users beside root may have user systemd instances running where timers are configured, as well. For example, on Fedora, by default, a user systemd instance is started for each user that is currently logged in. They can be recognized via:
$ ps aux | grep 'systemd[ ]--user'
Those user timers can be listed via:
$ systemctl --user list-timers
An alternative to issuing the list-timers command is to search for timer unit files (pattern: *.timer ) and symbolic links to them in the usual system and user systemd config directories:
$ 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
(As with normal service units, a timer unit is enabled via creating a symbolic link in the right systemd config directory.)
Как вывести список заданий Cron в Linux
Cron — это демон планирования, который позволяет вам планировать выполнение задач через определенные промежутки времени. Эти задачи называются заданиями cron и могут быть запланированы на выполнение по минуте, часу, дню месяца, месяцу, дню недели или любой их комбинации.
Задания Cron обычно используются для выполнения операций по обслуживанию системы. Например, задание cron можно настроить для автоматизации повторяющихся задач, таких как резервное копирование баз данных , обновление системы с помощью последних исправлений безопасности, очистка кеша, отправка электронных писем и т. Д.
В этой статье объясняется, как составить список заданий cron.
Вывод списка пользователей Cron Jobs
Файлы crontab пользователей именуются в зависимости от имени пользователя, а их расположение зависит от операционной системы. В дистрибутивах на основе Red Hat, таких как CentOS, файлы crontab хранятся в каталоге /var/spool/cron , а в Debian и Ubuntu файлы хранятся в каталоге /var/spool/cron/crontabs .
Чтобы получить список всех заданий cron для пользователя, под которым вы сейчас вошли в систему, используйте команду crontab :
Если пользователь настроил задания cron, содержимое пользовательских crontab будет отображаться на экране. В противном случае команда не выведет no crontab for .
Чтобы вывести список заданий cron других пользователей, используйте параметр -u чтобы указать имя пользователя в конце команды. Например, чтобы вывести список заданий cron пользователя с именем «mark», вы должны использовать:
Каждый пользовательский файл crontab имеет 600 разрешений и принадлежит пользователю. Только root и пользователи с привилегиями sudo могут просматривать задания cron других пользователей.
Чтобы узнать, какие пользователи создали задания cron, укажите содержимое каталога spool как пользователь root или sudo:
sudo ls -1 /var/spool/cron/crontabs
Результат будет выглядеть примерно так:
Список заданий Cron системы
/etc/crontab и файлы в каталоге /etc/cron.d являются общесистемными файлами crontab, которые могут редактировать только системные администраторы.
Используйте cat , less или любой текстовый редактор для просмотра содержимого файлов:
В большинстве дистрибутивов Linux вы также можете помещать скрипты в каталоги /etc/cron. , и эти скрипты выполняются каждый hour/day/week/month .
Каждый сценарий в этих каталогах должен иметь разрешение на выполнение. В противном случае задание cron не будет выполнено.
Например, чтобы просмотреть все еженедельные задания cron, введите:
-rwxr-xr-x 1 root root 813 Feb 10 2019 man-db
Если вывод пуст, это означает, что еженедельных заданий cron нет.
Таймеры Systemd
Таймеры Systemd — это файлы модулей, которые заканчиваются суффиксом *.timer и позволяют запускать служебные модули в зависимости от времени.
В дистрибутивах Linux, использующих systemd в качестве системы инициализации, таймеры используются как альтернатива стандартному демону cron.
Чтобы просмотреть список всех таймеров systemd на вашем компьютере, выполните следующую команду:
NEXT LEFT LAST PASSED UNIT ACTIVATES Sun 2020-02-16 00:00:00 UTC 1h 53min left Sat 2020-02-15 17:04:11 UTC 5h 2min ago logrotate.timer logrotate.service Sun 2020-02-16 00:00:00 UTC 1h 53min left Sat 2020-02-15 17:04:11 UTC 5h 2min ago man-db.timer man-db.service Sun 2020-02-16 03:50:52 UTC 5h 44min left Sat 2020-02-15 17:04:11 UTC 5h 2min ago apt-daily.timer apt-daily.service Sun 2020-02-16 06:12:38 UTC 8h left Sat 2020-02-15 17:04:11 UTC 5h 2min ago apt-daily-upgrade.timer apt-daily-upgrade.service Sun 2020-02-16 18:44:56 UTC 20h left Sat 2020-02-15 17:16:10 UTC 4h 50min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Выводы
Мы показали вам, как составлять список заданий cron и таймеров systemd.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.