Where is the cron/crontab log?

On a default installation the cron jobs get logged to

/var/log/syslog

You can see just cron jobs in that logfile by running

 grep CRON /var/log/syslog

If you haven’t reconfigured anything,the entries will be in there.

Where is the cron/crontab log?

You can create a cron.log file to contain just the CRON entries that show up in syslog. Note that CRON jobs will still show up in syslog if you follow the following directions.

Open the file

/etc/rsyslog.d/50-default.conf

Find the line that starts with:

#cron.*

uncomment that line, save the file, and restart rsyslog:

sudo service rsyslog restart

You should now see a cron log file here:

/var/log/cron.log

Cron activity will now be logged to this file (in addition to syslog).

Note that in cron.log you will see entries for when cron ran scripts in /etc/cron.hourly, cron.daily, etc. – e.g. something like:

Apr 12 14:17:01 cd CRON[14368]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

However, you will not see more information about what scripts were actually ran inside /etc/cron.daily or /etc/cron.hourly, unless those scripts direct output to the cron.log (or perhaps to some other log file).

If you want to verify if a crontab is running and not have to search for it in cron.log or syslog, create a crontab that redirects output to a log file of your choice – something like:

01 14 * * * /home/joe/myscript >> /home/log/myscript.log 2>&1

This will redirect all standard output and errors that may be produced by the script that is run to the log file specified.

Answer #3:

Sometimes it can be useful to continuously monitor it, in that case:

tail -f /var/log/syslog | grep CRON

Answer #4:

You can also direct the output of the individual cronjobs to their own logs for better readability, you will just need to append the output of date somewhere.

 0 15 * * *    /home/andrew/daily-backup.sh >> /var/log/daily-backup.log 2>&1

Answer #5:

If you have systemd installed on your system, you could display cron job log by using the journalctl command.

For example, on my Ubuntu 17.10:

journalctl -u cron.service

Answer #6:

journalctl -t CROND

on ubuntu >=18 it maybe

journalctl -t CRON

From the journalctl manual:

   -t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER, 
       or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

       This parameter can be specified multiple times.

Where is the cron/crontab log?

First make your cron job run every minute, then run cron as non-daemon (temporarily, just kill any crond that may have already started) with test logging:

crond -nx test

And see the log of your program execution flowing through your terminal.

Answer #8:

Like mentioned earlier, cron jobs get logged to /var/log/syslog

You can pipe the syslog to grep and filter out the CRON logs, like this

less /var/log/syslog | grep CRON 

You can search through your crontab logs, like this

less /var/log/syslog | grep CRON | grep <search-keyword-comes-here>

You can search through your crontab history logs stored in gz files, like this

less /var/log/syslog.2.gz | grep CRON | grep <search-keyword-comes-here>

Its always considered good to have a logging mechanism, you can quickly setup ELK for your servers, you can also experiment with logz.

Answer #9:

You could redirect the output of cron to a temporary file. Such as:

00 11 07 * * /bin/bash /home/ubuntu/command.sh > /tmp/output 2>&1

Error and normal output, both will be redirected to the same file.

Answer #10:

It may be different depending on the system type and edition. But in many cases, you have to figure out the time basis that the target crontab rule runs on. So for example, if you’re searching for the related log for a daily crontab rule, then you’ll find the log divided into different files, one per day, in:

$ ls -ltrh /var/log/cron-*

And you’ll get the logfiles.

Answer #11:

Check all CRON related logs in syslog files included compressed log files as well like this way:

zless /var/log/syslog* | grep CRON

On Ubuntu 20.04, /var/mail/{user} had the cron messages i was looking for.

I couldn’t find decent cron logs in /var/log/messages.

Hope you learned something from this post.

Follow Programming Articles for more!

About ᴾᴿᴼᵍʳᵃᵐᵐᵉʳ

Linux and Python enthusiast, in love with open source since 2014, Writer at programming-articles.com, India.

View all posts by ᴾᴿᴼᵍʳᵃᵐᵐᵉʳ →