How to View Cron Jobs on Linux (Every Method, Explained)
September 2, 2026


Why "Viewing" Cron Jobs Isn't Just One Command
Most tutorials answer "how do I view cron jobs" with a single line: crontab -l. That works until the job you're hunting for was set up by a former teammate under a service account, defined in /etc/cron.d/ instead of a personal crontab, or replaced by a systemd timer during an undocumented migration.
Cron jobs can live in several places at once: your own user crontab, another user's crontab, the system crontab, drop-in files under /etc/cron.d/, the periodic directories (cron.hourly, cron.daily, and so on), or systemd timer units. Listing cron jobs means finding all of these, not just the first one you check. And even once you've found every scheduled job on a server, you still haven't answered the more important question: did it run, and did it succeed? This article walks through both layers — locating jobs, then locating proof of execution — in the order you'd actually need them while debugging.
View Your Own Cron Jobs
Start with the basics. The crontab -l command lists the cron jobs scheduled under your current user account:
crontab -l
The output shows each scheduled entry with its timing fields and the command it runs. It reflects what's registered with the cron daemon for your user, not whether any of it executed.
If you see no crontab for , that isn't necessarily a bug — it means no crontab file exists for the user you're logged in as. This trips people up constantly: the job is running, colleagues can see its output, but your personal crontab -l comes back empty. The likely explanation is that the job isn't yours — it's defined under a different user (often a deploy or service account), in a system-level file, or as a systemd timer, none of which show up when you view your own crontab.
View Another User's Cron Jobs
When a job belongs to someone else — or to a service account like www-data or deploy — you need elevated permissions:
sudo crontab -l -u username
This requires sudo access; without it, you'll get a permission error rather than an empty list, a useful distinction when troubleshooting. A blank crontab means no jobs exist for that user; a permission denial means jobs might exist but you're not authorized to see them.
Jobs set up by a departed engineer, or scheduled under a CI/deploy user rather than a human account, are one of the most common reasons "list cron jobs" searches turn up nothing useful for someone debugging a production issue. If you're auditing a server you didn't build, checking every user account individually is tedious and easy to get wrong — which is exactly the gap covered in Find Cron Jobs: The Complete Multi-User Audit Guide, a more thorough walkthrough for auditing cron across many users or machines at once.
View System-Wide Cron Jobs
Beyond per-user crontabs, cron reads from several system-level locations. To see all cron jobs on a server, check each of them:
/etc/crontab— the system crontab, which includes an extra field specifying which user each job runs as./etc/cron.d/— a directory of drop-in cron files, commonly used by installed packages and configuration management tools to schedule jobs without touching a user's personal crontab./etc/cron.hourly/,/etc/cron.daily/,/etc/cron.weekly/,/etc/cron.monthly/— directories of scripts run on a fixed cadence byrun-parts, rather than individual crontab lines.
None of these appear in crontab -l output for any user, which is why relying on that one command alone gives an incomplete picture of what's scheduled on a machine.
On many modern distributions, some of this responsibility has shifted to systemd timers, which pair a .timer unit with a .service unit instead of a crontab line. To view them:
systemctl list-timers
This lists active and scheduled timers along with their next and last run times — the systemd-native equivalent of viewing a crontab, and increasingly where recurring jobs actually live on distros that favor systemd over classic cron.
View Cron Job Logs and Past Runs
Finding a scheduled job tells you it's configured, not that it ran. For that, you need cron's own logs, and the location depends on your distro.
On Debian and Ubuntu systems, cron typically logs to /var/log/syslog:
grep CRON /var/log/syslog
On CentOS, RHEL, and similar distributions, look for a dedicated cron log instead:
grep CRON /var/log/cron
On systemd-based systems, journalctl gives you the same information through the system journal:
journalctl -u cron
(or -u crond, depending on the daemon name on your distro).
Any of these will show that the cron daemon fired a job at the scheduled time — confirmation the execution was attempted. What they generally won't show, without extra configuration, is whether the command inside that job actually completed successfully. Cron logs execution attempts; it doesn't grade the outcome.
What These Commands Won't Show You
Here's the blind spot every method above shares: none of them report a job's exit code, capture its error output, measure how long it ran, or flag that a job silently stopped being scheduled after a server migration or config change. crontab -l shows intent. Syslog and journalctl show that cron attempted the run. Neither confirms cron job status in any meaningful sense — success, partial failure, or timeout all look identical from the outside unless you dig through the job's own output logs, if it even writes any.
This is how silent cron failures happen: a backup script that's been failing for three weeks because a disk filled up, a report job erroring out because an API key rotated, a job that vanished entirely after a host was decommissioned — and nothing in crontab -l or syslog raises a flag, because as far as cron is concerned, it did its job by attempting to run the command. For a closer look at how these failures slip past standard tooling, see Crontab Monitoring: How to Catch Silent Cron Failures. macOS users face a related but distinct set of issues — launchd quirks, sleep/wake behavior, and permission prompts that silently kill scheduled jobs — covered in Cron Job on Mac: Fixing Permissions, Sleep & Silent Failures.
This is precisely the gap Cronevra is built to close: instead of manually correlating crontabs, /etc/cron.d/, and log files across servers, you get execution history, failure alerts, and recovery notifications for every scheduled HTTP job in one place — so "scheduled" and "successful" stop being two separate investigations.
Frequently Asked Questions
How do I view all cron jobs for every user on a server?
There's no single native command for this — check each user's crontab individually with sudo crontab -l -u username, plus /etc/crontab, /etc/cron.d/, and the periodic directories. Doing this manually across many accounts or servers is slow and error-prone, which is why dedicated audit tooling like the guide linked above exists.
Why does crontab -l say 'no crontab for user' when I know jobs are running?
That message means no crontab file exists for the specific user you're currently logged in as — it says nothing about other users. The job you're looking for is likely scheduled under a different account (often a service or deploy user), in /etc/cron.d/, or as a systemd timer instead of a personal crontab entry.
Can I view cron jobs without root or sudo access?
You can always view your own crontab with plain crontab -l, no elevated privileges required. Viewing another user's crontab, or reading system files like /etc/cron.d/, generally requires sudo or root access, since crontabs are treated as private per-user data.
How do I check if a cron job actually ran, not just whether it's scheduled?
Check cron's logs — /var/log/syslog on Debian/Ubuntu, /var/log/cron on CentOS/RHEL, or journalctl -u cron on systemd systems — filtered with grep CRON to confirm the daemon fired the job. That confirms the attempt but not success; for actual pass/fail status you need the job's own output or a monitoring layer that tracks exit codes.
Do systemd timers show up when I run crontab -l?
No. Systemd timers are a separate scheduling mechanism entirely and never appear in crontab -l output for any user. To view them, use systemctl list-timers, which lists timer units alongside their next and last run times.
Where do I find cron job logs on Ubuntu vs CentOS?
On Ubuntu and other Debian-based systems, cron logs to /var/log/syslog, searchable with grep CRON. On CentOS and RHEL-based systems, cron typically writes to a dedicated /var/log/cron file instead, though both families also expose logs through journalctl on systemd-managed hosts.
Once you've confirmed where your jobs are defined and where their logs live, the next step is closing the gap between "scheduled" and "succeeded." Cronevra tracks execution history and alerts you the moment a job fails or stops running — check the pricing page to see plans for teams of any size.