Cron is a command-line job scheduler available on Linux operating systems that allows users to schedule jobs at specified intervals, including hourly, daily, weekly, and monthly. This is called system-wide crontab.
Cron jobs are defined in files called crontabs, and each user have their own crontab file, and the superuser can view crontabs owned by other users.
crontab is short for ‘cron table’, which consists of three parts (time, username, and command or script). A cron job is an actual command or script that you run in the background at a specific scheduled time.
[Schedule_Time] [User_Name] [Command_to_be_Executed]
In this quick tutorial, you will learn how to list and display all types of cronjobs scheduled on your Linux system.
Listing Cron Jobs of Current User
The default ‘crontab -l’ command displays the contents of your own crontab file. I logged in as root, so it shows root user cronjobs below.
crontab -l 0 1 * * 1 /usr/local/psa/libexec/modules/watchdog/cp/secur-check 0 1 * * 1 /usr/local/psa/libexec/modules/watchdog/cp/send-report weekly 10 1 * * * /usr/local/psa/libexec/modules/watchdog/cp/clean-sysstats 15 1 * * * /usr/local/psa/libexec/modules/watchdog/cp/pack-sysstats day 15 1 * * 1 /usr/local/psa/libexec/modules/watchdog/cp/pack-sysstats week 15 1 1 * * /usr/local/psa/libexec/modules/watchdog/cp/pack-sysstats month 15 1 1 * * /usr/local/psa/libexec/modules/watchdog/cp/pack-sysstats year 20 1 * * * /usr/local/psa/libexec/modules/watchdog/cp/clean-events 0 3 * * 7 /usr/local/psa/libexec/modules/watchdog/cp/clean-reports 47 23 * * * /usr/sbin/ntpdate -b -s 2.pool.ntp.org
Displaying Cron Jobs of Other User
A root or sudo privileged user can also view scheduled cron jobs of other users. To do so, use the following syntax. Replace the username you want to view cron jobs with the actual username.
crontab -u [User_Name] -l
For example, to check the scheduled cron jobs of the 'fosstechi'
user from root, you need to execute:
crontab -u fosstechi -l 0 3 * * * /bin/bash /opt/scripts/fosstechi-website-backup.sh 0 4 * * * /bin/bash /opt/scripts/fosstechi-db-backup.sh
Listing Cron Jobs by Time
Time-based cronjobs are located in several directories such as hourly, daily, weekly and monthly in Linux. You can drop cronjob in the respective directory based on your needs.
1) View Hourly Cron Jobs
Check the /etc/cron.hourly directory to find all cron jobs scheduled to run every hour. According to the below output, five cronjobs are scheduled to execute every hour.
ls -lh /etc/cron.hourly total 20K -rwxr-xr-x. 1 root root 392 May 16 19:58 0anacron -rwxr-xr-x. 1 root root 362 Oct 1 2020 0yum-hourly.cron -rwxr-xr-x. 1 root root 199 Jul 27 17:35 50plesk-hourly -rwxr-x---. 1 root root 172 Jan 10 2023 awstats -rwxr-xr-x. 1 root root 582 Jun 7 21:02 plesk-php-cleanuper
2) View Daily Cron Jobs
Similarly, you can check the /etc/cron.daily directory to find all cron jobs scheduled to run daily basis. As per the below output, there are eight cronjobs scheduled to execute on a daily basis.
ls -lh /etc/cron.daily total 32K -rwxr-xr-x. 1 root root 211 Jan 12 2017 00webalizer -rwxr-xr-x. 1 root root 332 Oct 1 2020 0yum-daily.cron -rwxr-xr-x. 1 root root 314 Jul 27 17:35 50plesk-daily -rwxr-xr-x. 1 root root 448 Jul 3 16:07 60sa-update -rwxr-xr-x. 1 root root 129 Jul 6 21:07 dmarc-report -rwx------. 1 root root 219 Apr 1 2020 logrotate -rwxr-xr-x. 1 root root 618 Oct 30 2018 man-db.cron -rwxr-xr-x. 1 root root 754 May 16 16:32 plesk-rrd-cleaner
3) View Weekly Cron Jobs
Similarly, you can check the /etc/cron.weekly directory to find all cron jobs scheduled to run weekly. As per the output below, three cronjobs are scheduled to be executed weekly.
ls -lh /etc/cron.weekly total 12K -rwxr-xr-x. 1 root root 199 Jul 27 17:35 50plesk-weekly -rwxr-xr-x. 1 root root 457 Jul 19 12:02 fail2ban-vacuum -rwxr-xr-x. 1 root root 142 Jul 28 15:59 plesk-remove-temp-backups
4) View Monthly Cron Jobs
Similarly, you can check the /etc/cron.monthly directory to find all cron jobs scheduled to run monthly. According to the below output, only one cronjob is scheduled to run monthly.
ls -lh /etc/cron.monthly total 4.0K -rwxr-xr-x. 1 root root 200 Jul 27 17:35 50plesk-monthly
Viewing System-Wide Cron Jobs
The system-wide root cron jobs can be found in the /etc/crontab file. You must be superuser in order to view this cronjob.
Listing Application Specific Cron Jobs
Application specific cronjobs can be found in multiple cron directories. However, application-related routine tasks are dropped into the /etc/cron.d directory by some applications.
ls -lh /etc/cron.d total 12K -rw-r--r--. 1 root root 128 May 16 19:58 0hourly -rw-r--r--. 1 root root 122 May 20 10:22 plesk-backup-manager-task -rw-r--r--. 1 root root 71 May 20 12:20 sa-update
Displaying All Users Cron Jobs
All user cron jobs are typically located in the spool ‘/var/spool/cron’ directory on RHEL based system, whereas Debian and Ubuntu cronjobs are stored in ‘/var/spool/cron/crontabs’ directory. A separate file is created for all the user accounts with their name.
To list the cronjobs of all users, use the ls command as shown below:
ls -lh /var/spool/cron total 1.5M -rw-------. 1 root root 10 May 20 20:46 2daygeek -rw-------. 1 root root 10 May 20 12:45 fosstechi -rw-------. 1 root root 10 May 20 12:43 linuxtechnews -rw-------. 1 root root 10 May 20 12:43 mageshcoin
Final Thoughts
In this article, we have described how to list or view cron jobs on a Linux system. Cronjobs can be executed on demand based on time spread across multiple locations on an hourly, daily, weekly or monthly basis.
If you have any questions or feedback, feel free to comment below.