cron 作业打印到 /dev/stdout

1 cron

我想设置一个将输出打印到 /dev/stdout 的作业,但 cron 正在拦截它,并发送一封电子邮件

\n\n
crontab -l\n*/1 * * * * echo "hiccup" >> /dev/stdout 2>&1\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是消息:

\n\n
21   \xe2\x94\x82 From xxx@ltus423288.na.yyy.com  Tue May 21 11:13:00 2019\n22   \xe2\x94\x82 Return-Path: <xxx@ltus423288.na.yyy.com>\n23   \xe2\x94\x82 X-Original-To: xxx\n24   \xe2\x94\x82 Delivered-To: xxx@ltus423288.na.yyy.com\n25   \xe2\x94\x82 Received: by ltus423288.na.yyy.com (Postfix, from userid 501)\n26   \xe2\x94\x82     id EE6752E98EF; Tue, 21 May 2019 11:13:00 +0200 (CEST)\n27   \xe2\x94\x82 From: xxx@ltus423288.na.yyy.com (Cron Daemon)\n28   \xe2\x94\x82 To: xxx@ltus423288.na.yyy.com\n29   \xe2\x94\x82 Subject: Cron <xxx@ltus423288> echo "hiccup" >> /dev/stdout 2>&1\n30   \xe2\x94\x82 X-Cron-Env: <SHELL=/bin/sh>\n31   \xe2\x94\x82 X-Cron-Env: <PATH=/usr/bin:/bin>\n32   \xe2\x94\x82 X-Cron-Env: <LOGNAME=xxx>\n33   \xe2\x94\x82 X-Cron-Env: <USER=xxx>\n34   \xe2\x94\x82 X-Cron-Env: <HOME=/Users/xxx>\n35   \xe2\x94\x82 Message-Id: <20190521091300.EE6752E98EF@ltus423288.na.yyy.com>\n36   \xe2\x94\x82 Date: Tue, 21 May 2019 11:13:00 +0200 (CEST)\n37   \xe2\x94\x82 Status: O\n38   \xe2\x94\x82\n39   \xe2\x94\x82 hiccup\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经配置了 fluidd,它可以从 stdout 获取所有内容,所以我更喜欢 cron 在那里发送作业日志。我尝试写入到 /dev/stdout 的符号链接的文件,但它不起作用。我不确定,如果我禁用发送邮件,并命令 cron 写入 /var/log/syslog (并使其成为 /dev/stdout 的符号链接),cron 将陷入无限循环。

\n

Hko*_*oof 7

cron 的目的是在没有终端的情况下运行命令。这意味着没有终端可以输出标准输出。这就是它被邮寄的原因。

您可以丢弃它的输出:

*/1 * * * * echo "hiccup" >> /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

您可以将作业的标准输出通过管道传输到程序,例如logger将其发送到系统日志守护进程:

*/1 * * * * echo "hiccup" | logger -t mycronjob 2>&1
Run Code Online (Sandbox Code Playgroud)

或者将其重定向到文件:

*/1 * * * * echo "hiccup" >> /var/tmp/some_file 2>&1
Run Code Online (Sandbox Code Playgroud)

但根本没有终端可以让 cron 作业将其标准输出发送到...