有没有更好的方法来清理日志文件?我通常删除旧的日志文件并创建一个新的日志文件,并且我正在寻找更短的类型/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