如何将cron作业输出重定向到stdout

时间:2016-04-06 04:06:34

标签: linux unix cron crontab

我有一个cron作业,它的输出现在被重定向到一个文件中。它看起来像以下

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

任何人都可以帮我重新输出到stdout吗?

3 个答案:

答案 0 :(得分:26)

运行进程有一个PID,其fd(文件描述符)映射到/proc/<PID>/fd。我们可以在/var/run/crond.pid找到正在运行的cron进程的PID。

要将cron日志发送到stdout,我们可以将日志写入由cron启动的进程的fd编号。

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

答案 1 :(得分:3)

在任何终端上输入tty,我们将获得特定终端窗口的设备文件,如/dev/pts/1。将cron作业重命名为此文件 cleanup.sh > /dev/pts/1

答案 2 :(得分:1)

运行cat /home/darkknight/cleanup.log然后在STDOUT上获得输出。 如果您无法看到预期的输出结果,可能需要修改cron,如下所示:

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

获取cleanup.sh在其STDERR上写的内容。

如果您不想丢失昨天的输出,请修改如下:

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

或者,只需执行/bin/sh /bin/cleanup.sh,即可在终端上同时获得STDOUT和STDERR。