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
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.