How to redirect cron job output to stdout How to redirect cron job output to stdout unix unix

How to redirect cron job output to stdout


Running process has a PID and its fd (file descriptor) is mapping to /proc/<PID>/fd. And we can find PID of the running cron process at /var/run/crond.pid.

To send cron log to stdout, we could write log to fd number 1 of the process started by cron.

0 9 * * * /bin/sh /bin/cleanup.sh > /proc/$(cat /var/run/crond.pid)/fd/1 2>&1


Enter tty on any terminal and we will get device file for that particular teminal window like /dev/pts/1. Redirct the cron job into this file as cleanup.sh > /dev/pts/1


Run cat /home/darkknight/cleanup.log then you get the output on STDOUT.If you can't see what you expect as output, maybe you need to modify the cron as following:

0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log 2>&1

To get what cleanup.sh writes on its STDERR.

If you don't want to lose the output of yesterday, modify as following:

0 9 * * * /bin/sh /bin/cleanup.sh >> /home/darkknight/cleanup.log 2>&1

Or, just execute /bin/sh /bin/cleanup.sh then you get both STDOUT and STDERR on your terminal.