我需要从主要运行 Apache 的 Debian 机器中删除所有系统日志等。
/var/log
删除所有文件而不重新创建(通过触摸?)任何文件是否安全?也就是说,如果所有标准进程突然发现日志文件不见了,它们是否会自动重新创建日志文件,包括使用正确的默认所有者和权限?
答案1
不,不是真的。有些日志文件不会被写入它们的进程重新创建。你最好清空日志文件,例如 cat /dev/null > /var/log/
答案2
有些守护进程直到你让它们知道它们的日志文件已经改变才会高兴kill -HUP
(特别是当它是 时mv
)。在执行此操作之前,你应该知道它们的行为是什么。
您应该考虑使用mv
,kill -HUP
然后shred
使用移动的文件(而不是cp
或echo
)。
此外,您可能还想阅读man 8 logrotate
更多信息。
答案3
声誉太低,无法发表评论,因此我将其放在答案中:
要清空 /var/log/ 中的每个文件(包括子目录),您可以发出
find /var/log/ -type f -exec cp /dev/null {} \;
(当然这还没有经过测试)
我认为是的,清空它们是安全的。但是,如果不检查其中的日志文件列表或创建它们的应用程序,没有人能够确定。Debian 政策表明这应该是安全的,但可能没有人尝试过。
如果我是你,我会保留目录的副本,然后检查系统的功能。并且不要忘记删除备份 :)
答案4
通常最好将它们归零,例如:
cp /dev/null /var/log/logname
这样,如果任何正在运行的进程有 logname 的打开文件句柄,它将能够继续写入文件,完全不知道发生了什么。