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?
4 Answers
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:
$ crontab -l
or for another user via
# crontab -l -u juser
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
/var/spool/cron/crontabs
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
/etc/crontab
With cronie (default on Fedora/CentOS), there is a .d
style config directory for system cron jobs, as well:
/etc/cron.d
(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:
$ systemctl list-timers
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.)
See also:

- 57,532
-
I didn't downvote. But I just tried
crontab -l -u root
(because those cronjobs I want to know about run underroot
), and it says I don't have privileges to use-u
. – Frank Feb 07 '11 at 21:00 -
4Then you have to call it with enough privileges - i.e. as
root
user. – maxschlepzig Feb 07 '11 at 21:02 -
4Still not complete — some versions of cron run jobs from /etc/cron.d and /etc/cron.{daily,hourly,monthly,weekly} without a helper program called from /etc/crontab. – mattdm Feb 08 '11 at 15:43
-
1@mattdm, sure - thus the first sentence 'Probably depends on the crond you are using' - but looking at /etc/crontab you usually see references of /etc/cron.d, /etc/cron.daily etc. – maxschlepzig Feb 08 '11 at 17:03
-
3@maxschlepzig - but not always. And the question is "how can I get a list of all cron jobs"; an reply which is "well, here's some of them" isn't the answer. – mattdm Feb 08 '11 at 17:20
-
@mattdm, which crond has a
/etc/crontab
that does not include references to/etc/cron.daily
etc. and does support/etc/cron.daily
and friends via other builtin mechanisms? – maxschlepzig Sep 15 '11 at 18:17 -
1@maxschlepzig —
cronie
, as shipped in Fedora and RHEL6, do not refer to those in/etc/crontab
, but instead use/etc/anacrontab
. I may be mistaken about any actual implementations that don't refer to these in any config file. (But then, I didn't downvote either.... I'm just sayin'.) – mattdm Sep 15 '11 at 20:28 -
Depending on how your linux system is set up, you can look in:
/var/spool/cron/*
(user crontabs)/etc/crontab
(system-wide crontab)
also, many distros have:
/etc/cron.d/*
These configurations have the same syntax as/etc/crontab
/etc/cron.hourly
,/etc/cron.daily
,/etc/cron.weekly
,/etc/cron.monthly
These are simply directories that contain executables that are executed hourly, daily, weekly or monthly, per their directory name.
On top of that, you can have at jobs (check /var/spool/at/*
), anacron (/etc/anacrontab
and /var/spool/anacron/*
) and probably others I'm forgetting.

- 868

- 24,406
-
5Thanks, I found them in
/etc/cron.daily
. How does thatdaily
file work? What time will the daily jobs run? On my machine they seem to run around noon, but it'd like to tell my sysadmin how to change that to midnight instead. – Frank Feb 07 '11 at 21:21 -
7cron.daily is called from
/etc/crontab
, e.g. on my Ubuntu system it's:25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
which means 6:25 am. – Kowh Feb 08 '11 at 01:20 -
cron.daily is called from /etc/crontab on my RHEL5 system too, if you'd like more data points. – jsbillings Feb 08 '11 at 13:34
-
On newer Fedora (and probably RHEL6 -- haven't looked yet), the
cronie
daemon takes care of those using the configuration in/etc/anacrontab
. – mattdm Feb 08 '11 at 15:48 -
-
-
To list all crons for the given user.
crontab -u username -l;
To list all crons for all users
Run it as a super user
#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do
crontab -l -u $user;
done
-
1
-
1
-
It's not working. "no crontab for www-data". but username www-data is exists. – Michail M. Oct 11 '17 at 07:19
You can list all cron jobs with (I'm using more to list the location in the output):
sudo sh -c 'more /etc/crontab /etc/cron.d/* /var/spool/cron/crontabs/* 2>/dev/null' | less
Or without comments:
sudo sh -c 'more /etc/crontab /etc/cron.d/* /var/spool/cron/crontabs/* 2>/dev/null' \
| grep "^\s*[^#]"
crontab has entries to run the scripts in cron.hourly, daily, weekly and monthly - you can list those with:
ls /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly

- 5,946
-
Nice. In CentOS 7, had to use
/var/spool/cron/*
, plus anacron jobs, e.g.cron.daily
e.g. combined together becomessudo sh -c 'more /etc/crontab /etc/cron.d/* /var/spool/cron/* /etc/cron.*/* 2>/dev/null' | less
` – Danila Vershinin May 30 '21 at 09:56
root
orapache
or whatever, but one should use/etc/crontab
or (better, in most distros)/etc/cron.d
and/etc/cron.[timeframe]
. – mattdm Feb 08 '11 at 15:45