How to redirect cron job output to stdout

前端 未结 3 1724
不知归路
不知归路 2020-12-25 13:08

I have a cron job and its output is now redirected into a file. It looks like the following

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

相关标签:
3条回答
  • 2020-12-25 13:15

    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.

    0 讨论(0)
  • 2020-12-25 13:25

    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
    
    0 讨论(0)
  • 2020-12-25 13:29

    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

    0 讨论(0)
提交回复
热议问题