在 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