删除非常大的文件而不会冻结网络服务器

Jin*_*Heo 11 linux centos apache-2.2

在我的 Web 服务器(正在运行 apache,Linux CentOS)中,有一个非常大的日志文件(50 GB)。该 Web 服务器在生产中有一些 Web 服务。

当我尝试删除日志文件时,Web 服务器在大约 10 秒内没有响应。(服务结束时间。)

rm -f monthly.log
Run Code Online (Sandbox Code Playgroud)

有没有办法在不冻结apache的情况下删除这个大文件?

qua*_*nta 23

首先通过 旋转它logrotate,使用这样的配置:

/path/to/the/log {
    missingok
    notifempty
    sharedscripts
    daily   
    rotate 7
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
    compress
}
Run Code Online (Sandbox Code Playgroud)

然后在午夜创建一个 cron 作业来删除旋转的文件:

30 2 * * * nice -n 19 ionice -c2 -n7 rm -f /path/to/the/log/file.1
Run Code Online (Sandbox Code Playgroud)


Dan*_* t. 5

为了更快地删除大文件,您可以使用truncate命令 - 说将其缩小到零大小,然后将其删除:

 truncate -s 0  monthly.log && rm -f monthly.log
Run Code Online (Sandbox Code Playgroud)

按照 quanta 的建议,您需要先对它进行 logrotate。