【问题标题】:Crontab + Journalctl: extra messagesCrontab + Journalctl:额外消息
【发布时间】:2018-09-06 09:26:23
【问题描述】:

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

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

# 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]: ...),但主要是我要求这个以了解有关该主题的更多信息。

【问题讨论】:

    标签: logging cron systemd journal


    【解决方案1】:

    cron 将它运行的每个命令都记录到 syslog 中,并且在您的系统上,syslog 也会最终出现在日志中。据我所知,cron 没有禁用该功能的选项,但您可以通过仅选择通过标准输出接收到的日志消息来隐藏这些消息:

    journalctl -u cron _TRANSPORT=stdout
    

    -u cron 在 CentOS 上可能是 -u crond 或类似的东西,我不确定。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-12
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      • 2019-04-15
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多