我有一个cron作业,它的输出现在被重定向到一个文件中。它看起来像以下
0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log
任何人都可以帮我重新输出到stdout吗?
答案 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。