答案1
如果必须清除日志文件,请执行
cp /dev/null /var/log/file
或者
echo > /var/log/file
这会截断文件但不关闭任何打开的文件句柄。
编辑:使用logrotate
来处理文件是更好的长期解决方案。截断文件应该是一种应急措施。
答案2
我更推荐使用 logrotate,而不是直接删除旧日志文件。稍后您可能需要它们来调试某些东西,或者找出系统运行良好的模式,以便进行比较。
备份和恢复如此受欢迎是有原因的。但是,如果这不是任何生产服务器或重要的东西,我不会担心删除它们。
答案3
如果您不打算使用它们,您可以将其删除。我建议您删除所有日志,但不要删除当前日志,如果可以的话,我应该使用日志轮换。
答案4
如果正在使用,删除日志将使 apache 重新加载以重新打开刚刚删除的文件。您可以尝试的是 logrotate,或者尝试清空文件。不过我认为您需要SIGUSR1
apache。
这关联可能会有帮助。
编辑:刚刚测试过:
# > /var/log/apache2/access.log
# tail -F /var/log/apache2/access.log
.. Still prints lines ....
# rm /var/log/apache2/access.log ; touch /var/log/apache2/access.log
# tail -F /var/log/apache2/access.log
.. displays nothing ....
# kill -USR1 $(pidof apache2)
# tail -F /var/log/apache2/access.log
.. prints lines again ....
编辑2:感谢@voretaq提供有关 apache 信号的更多信息。SIGUSR1
确实比 暴力程度要小SIGHUP
。