我目前有一台 Debian 服务器,硬盘空间不足,通过使用该lsof | grep deleted | less
命令,我发现了已用完(但未释放)空间的违规文件。
in:imklog 462 518 root 7w REG 8,1 11199498620 1448243 /var/log/daemon.log (deleted)
我知道重启99.999%都会释放这些文件,但这是不可取的。
我很高兴删除文件(而不是logrotate
)导致了这种情况,因此将解决这个问题,但是,我的问题是,我可以释放这些被保留的文件并且在不重新启动的情况下不释放空间吗?是的,怎么样?
提前致谢。
答案1
重新加载/重新启动或发送HUP
信号 ( kill -1
) 到使日志文件保持打开状态的任何位置(可能rsyslogd
)。您可能正在运行 systemd,因此:
systemctl restart rsyslog.service
或者/etc/init.d/rsyslog restart
如果你正在跑步sysvinit
。
这将导致 rsyslogd 重新加载其配置文件,关闭并重新打开其所有日志文件。
(注意:对于大多数守护进程,“reload”是用于让它们重新加载配置文件和/或关闭和重新打开任何文件的关键字,“restart”用于停止然后启动它。出于某种原因,“restart”与 debian rsyslog 软件包一起使用,通过向 rsyslog 守护进程发送 HUP 信号来触发重新加载)
一旦没有进程保留该日志文件的打开文件句柄,它正在使用的空间将被释放。