我在 VPS(运行 CentOS 6.8)上运行我的小公司的网站和几项服务,我对该 VPS 拥有完全的管理权限。
为了找出 PHP 脚本中的内存泄漏问题,我监控 VPS 一段时间了,再次查看了日志。我看到的是一长串日志消息,例如:
我想解决导致这些错误“污染”系统日志的任何配置问题,因为它们会使日志无法使用。每 5 秒,我都会收到一批这样的信息:
Feb 17 12:43:03 vpsxxxxx init: tty (/dev/tty2) main process (1381) terminated with status 1
Feb 17 12:43:03 vpsxxxxx init: tty (/dev/tty2) main process ended, respawning
Feb 17 12:43:03 vpsxxxxx init: tty (/dev/tty1) main process (1382) terminated with status 1
Feb 17 12:43:03 vpsxxxxx init: tty (/dev/tty1) main process ended, respawning
Feb 17 12:43:03 vpsxxxxx /sbin/mingetty[1419]: tty2: no controlling tty: Operation not permitted
Feb 17 12:43:03 vpsxxxxx /sbin/mingetty[1420]: tty1: no controlling tty: Operation not permitted
当日志轮换时(每周一次),我发现日志文件中有超过 60 MB 的大小,这让 nano 不堪重负。
我不知道 mingetty 对于 VPS 正常运行(或通过 SSH 连接)有多重要。我是唯一管理服务器的人,但我很少同时使用 2 个以上的 SSH 连接。
有没有办法解决这么多与 Mingetty 相关的日志消息?
答案1
由于你的机器是虚拟机,你可以完全禁用 Mingetty 和虚拟控制台,如http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/getty-mingetty.html:
如果机器没有视频卡,则从 /etc/inittab 中删除所有 mingetty 条目。
由于您使用的是 CentOS 6,我猜您使用的是 upstart,并且没有 inittab。要禁用 tty,您可以创建两个文件 /etc/init.d/tty1.override 和 /etc/init.d/tty2.override,其中只包含单词“manual”(所有命令都要以 root 身份传递):
echo manual > /etc/init/tty1.override
echo manual > /etc/init/tty2.override
stop tty1
但我建议你在 :和之前做一些测试stop tty2
,并尝试打开一个新的 ssh 连接。如果成功,继续禁用 tty1 和 tty2。
答案2
@Hexdump 通过阅读我关于 upstart 的资料,引导我找到了解决方案。非常感谢。
对我来说,解决方案分为两个步骤:
nano /etc/init/start-ttys.override
(文件内容如下)shutdown -r now
覆盖文件的内容是:
env ACTIVE_CONSOLES=/dev/tty[1-1]
script
end script
基本上,我正在用无操作脚本替换启动 mingetty 实例的有问题的脚本。
第一行是我试图减少 tty 数量的残留,按照此主题,这也表明处理方式存在错误ACTIVE_CONSOLES
。这个错误就是需要重新启动的原因。我不确定第一行是否有必要。
问题解决了,但我认为根本原因仍未解决,这让我感到很不爽:如果我在实际机器上遇到此日志污染问题,我将无法禁用该脚本。因此,我认为这是一个不成熟的解决方案,但就目前而言,它足以应付当前情况。