如何清理日志文件?

如何清理日志文件?

有没有更好的方法来清理日志文件?我通常删除旧的日志文件并创建一个新的日志文件,并且我正在寻找更短的类型/bash/命令程序。如何使用别名?

答案1

> logfile

或者

cat /dev/null > logfile

或者

true | tee logfile

(可以自由地替换false或任何其他不产生输出的命令,就像eg:中所做的那样bash)如果你想更加雄辩,将全部为空logfile(实际上他们会将其截断为零大小)。

如果您想知道“需要”多长时间,您可以使用

dd if=/dev/null of=logfile

dd if=/dev/null > logfile(顺便说一句,这与 相同)

您还可以使用

truncate --size 0 logfile

(或truncate -s 0 logfile) 完全明确,或者,如果您不想,

rm logfile

(在这种情况下,您依赖于应用程序通常会重新创建日志文件(如果日志文件尚不存在)的常见行为)。

但是,由于日志文件通常很有用,因此您可能需要压缩并保存副本。虽然您可以使用自己的脚本来做到这一点,但最好至少尝试使用现有的工作解决方案,在本例中logrotate,它可以完全做到这一点并且可以合理配置。

如果您需要对多个文件执行此操作,安全的方法是

truncate -s 0 file1 file2 ...

或者

> file1 > file2 ...

某些 shell ( zsh) 还允许指定多个重定向目标。

这是有效的(至少在bash),因为它创建了所需的所有重定向,尽管只有最后一个会捕获任何输入(或者在本例中没有)。具有多个文件的示例tee在任何情况下都应该有效(假设您tee确实知道如何处理多个输出文件)

当然,旧的 shell 循环也可以工作:

for f in file1 file2 ... ; do
    # pick your favourite emptying method
done

尽管由于每个文件单独运行该命令,速度会慢得多。使用以下方法可能会有所帮助find

find <criteria matching required files> \
    -exec <command capable of zeroing several files> {} \+

或者

find <criteria matching required files> -delete

相关内容