正如标题所示,/var/log/auth.log
停止记录身份验证错误。这一切都是从我不小心删除它开始的。然后我使用 touch 命令创建它并将所有者:组更改为syslog:adm
。我已经rsyslog
安装了。但它只是不记录任何东西。
有办法解决吗?操作系统是 Ubuntu Server 22.04.3 LTS。谢谢。
答案1
重新创建文件后,您是否重新启动rsyslog
或执行了它?kill -HUP
你可能应该。
在符合 POSIX 标准的系统中,在其他进程正在使用文件时删除该文件将使新进程无法访问该文件,但任何已打开该文件的进程(如rsyslog
您的情况)将能够继续正常使用该文件。仅当打开该文件的所有进程都终止或关闭该文件后,文件系统驱动程序才会完成文件删除。
此行为可以实现诸如在使用时更新程序二进制文件之类的操作:使用旧版本二进制文件启动的任何进程都将继续使用旧版本,直到终止,而新进程将自动使用新版本启动。
副作用是任何已删除但仍打开的文件将继续使用磁盘空间,直到文件关闭(或保持它们打开的进程结束)。如果包含大量消息的日志文件在打开时被无意中删除,则此类文件可能会增长到任意大的大小。您可以看到此类已删除但仍打开的文件sudo lsof +L1
。