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

sha*_*eeq 16 unix linux cron crontab

我有一个cron作业,它的输出现在重定向到一个文件.它看起来如下

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

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

gag*_*ala 32

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

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

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

  • @KeithThompson我的场景是我使用运行cron服务的docker容器(使用`cron -f` make cron在前台运行),因为我想收集用于监控和分析的日志.根据12因素应用程序 - "将日志视为事件流",因此我将cron日志重定向到stdout. (6认同)
  • 我突然想到,对于docker场景,指定`procid = 1`更为准确:`/ proc/1/fd/1 2>&1`因为proc 1是docker logs的内容 (3认同)

ach*_*ora 9

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

  • 当您注销或退出当前 shell 时,该 tty 将变得无效(关闭并可能稍后重新使用)。 (2认同)