Ubuntu 22.04中如何阻止日志信息输出到控制台?
Ubuntu 22.04中如何阻止日志信息输出到控制台?
看起来你在Ubuntu 22.04更新升级后,遇到了各类系统日志(比如sudo、anacron、cron的运行日志)直接蹦到终端的糟心事,连logger命令都能直接把内容打在屏幕上,这种情况确实挺影响日常操作的。结合你描述的现象,大概率是系统日志服务(rsyslog或者systemd-journald)的配置出了问题,把终端当成了日志输出的目标。下面给你一步步排查和解决的方法:
第一步:检查并调整rsyslog配置
Ubuntu默认用rsyslog处理日志,先从这里入手:
- 先备份配置文件,防止改坏了没法恢复:
sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.bak sudo cp /etc/rsyslog.d/50-default.conf /etc/rsyslog.d/50-default.conf.bak - 编辑主配置文件:
查找有没有类似下面的行:sudo nano /etc/rsyslog.conf
这行是把认证类日志输出到控制台,如果存在,在开头加auth,authpriv.* /dev/console#注释掉它,或者把/dev/console改成指定的日志文件(比如/var/log/auth.log)。 - 接着编辑默认规则文件:
同样检查有没有把sudo nano /etc/rsyslog.d/50-default.confuser、authpriv等类别的日志定向到/dev/console或者当前终端的配置,如有就注释掉。 - 重启rsyslog服务让配置生效:
sudo systemctl restart rsyslog
第二步:检查systemd-journald的配置
如果调整rsyslog后问题还存在,就看看systemd的日志服务:
- 编辑journald的配置文件:
sudo nano /etc/systemd/journald.conf - 找到
ForwardToConsole选项,把它的值从yes改成no(如果原来被注释了,就去掉前面的#再改):ForwardToConsole=no - 重启journald服务:
sudo systemctl restart systemd-journald
第三步:验证效果
做完上面的操作后,你可以测试一下:
- 运行
logger 测试日志,看看终端会不会再输出这条内容 - 执行
sudo ls,检查sudo的会话日志是不是不再刷屏了 - 等一分钟看看cron的任务日志会不会再蹦出来
另外,关于cron提示的No MTA installed,这是因为cron默认会把任务输出发邮件,但你没装邮件服务。如果不想看到这个提示,可以安装postfix(选择“Local only”模式),或者修改crontab里的任务,把输出重定向到/dev/null,比如:
* * * * * echo "Example cron" > /dev/null 2>&1
备注:内容来源于stack exchange,提问作者drjrm3
相关产品推荐
相关产品推荐

