Crontab + Journalctl:额外的消息

时间:2018-09-06 09:26:23

标签: logging cron systemd journal

免责声明:以下内容描述了在CentOS 7中出于学习目的所做的事情。

我想将crontab作业的输出重定向到journalctl。 当我有以下记录时,它只是向根用户发送一封邮件。

# crontab -l
* * * * * echo "Hello World"

我已经读到systemd-cat的信息,它可以执行一个流程,并将其输出传递到日志中。 所以我做到了:

# crontab -l 
* * * * * systemd-cat -t "cron-bot" echo "Hello World"

但是现在我每分钟会收到两条日志消息:

{
  "_TRANSPORT" : "syslog",
  "SYSLOG_IDENTIFIER" : "CROND",
  "MESSAGE" : "(root) CMD (systemd-cat -t \"cron-bot\" echo \"Hello World\")",
  "_CMDLINE" : "systemd-cat -t cron-bot echo Hello World",
}
{
  "_TRANSPORT" : "stdout",
  "SYSLOG_IDENTIFIER" : "cron-bot",
  "MESSAGE" : "Hello World",
  "_COMM" : "echo",
}

,或者简写为:

Sep 06 08:58:01 hostname CROND[13417]: (root) CMD (systemd-cat -t "cron-bot" echo "Hello World")
Sep 06 08:58:01 hostname cron-bot[13417]: Hello World

有人可以向我解释这种行为吗?我只想收到工作输出(cron-bot[13417]: Hello World) 并且没有收到命令本身(CROND[13417]: ...),但是大多数情况下,我是想让他们进一步了解该主题。

1 个答案:

答案 0 :(得分:1)

cron会将其运行的每个命令记录到syslog中,并且在您的系统上syslog也会记录在日志中。据我所知,cron并没有禁用此选项的选项,但是您可以通过仅选择通过stdout接收的日记消息来隐藏这些消息:

journalctl -u cron _TRANSPORT=stdout

(不确定-u cron-u crond还是CentOS上的类似东西。)