使用 systemd 降低 cron 日志级别

使用 systemd 降低 cron 日志级别

在 Google 上搜索解决方案时,我只找到一些文章告诉我如何在旧系统中执行此操作,而不是在 systemd 维护的 Linux 下,通过更改 cron init-script 在命令行中添加 -L 参数。

我有一个每分钟运行一次的 cron 作业。它记录每次启动,并为运行 cron 的用户记录每个打开和关闭的会话的 pam_unix 条目。journald 日志中有很多杂乱无章的内容。如何在 systemd 环境中设置日志级别,以便只记录错误和致命事件?

示例消息:

CRON[4041958]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
CRON[4041958]: pam_unix(cron:session): session closed for user root

答案1

好的,我手头只有 EL 系统,但是我问了一个使用 Debian 8 系统的朋友,他的答案大致相同。

对于使用 cron 的 Debian(用 crond 替代 EL)

systemctl status cron 
systemctl status cron
cron.service - Regular background program processing daemon
   Loaded: loaded (/lib/systemd/system/cron.service; enabled)
   Active: active (running) since Mon 2015-11-02 21:13:22 CET; 1 months 0 days ago
     Docs: man:cron(8)
 Main PID: 983 (cron)
   CGroup: /system.slice/cron.service
           983 /usr/sbin/cron -f

如果你再看看/lib/systemd/system/cron.service

[Unit]
Description=Regular background program processing daemon
Documentation=man:cron(8)

[Service]
EnvironmentFile=-/etc/default/cron
ExecStart=/usr/sbin/cron -f $EXTRA_OPTS
IgnoreSIGPIPE=false
KillMode=process

[Install]
WantedBy=multi-user.target

您可以看到它/etc/default/cron从所使用的文件中加载环境文件 amd$EXTRA_OPTS

如果你的 cron 守护进程支持它,你可以提供一个选项来更改那里的日志详细程度

EXTRA_OPTS="-L 0"

您的发行版的 cron(d)(8) 的手册页应该会告诉您有哪些日志记录选项。

答案2

对于 Fedora 中的相同操作,请按照@Iain 的说明进行操作,但编辑CRONDARGS选项/etc/sysconfig/crond

答案3

systemctl edit cron在 Ubuntu 上,我通过如下方式设置覆盖 ExecStart 参数:

[Service]
ExecStart=
ExecStart=/usr/sbin/cron -L 0 -f $EXTRA_OPTS

-L 0禁用日志记录的位置。

答案4

实际上,这种闲聊日志的唯一原因是聚丙烯酰胺配置。为了减少噪音:

  • 前往/etc/pam.d目录。

  • 在编辑器中打开文件 common-session-noninteractive。

  • 查找以下行:

    session required pam_unix.so

  • 在此行上方添加以下内容:

    session [success=1 default=ignore] pam_succeed_if.so service in cron quiet use_uid

  • 保存文件并退出。使用 service cron restart 之类的命令重新启动 crond。

解决方案描述如下:https://languor.us/cron-pam-unix-cron-session-session-opened-closed-user-root-uid0 和这里:https://askubuntu.com/a/280255/366528

相关内容