如何截断所有日志文件?

pyl*_*ver 22 command-line scripts files log

谁能给我一个截断/var/log/目录中所有日志文件的解决方案?

以及一个仅针对知识的问题,这是一个好主意吗?

#!/bin/bash
LOGDIR="/var/log"
for logfile in $(ls $LOGDIR/*log)
do
  truncate -s 0 $logfile
done
Run Code Online (Sandbox Code Playgroud)

D-E*_*E-N 44

尝试这个:

truncate -s 0 /var/log/*log

编辑:

如果您想多次执行此操作,您应该使用它logrotate来处理您的日志。通常它安装在ubuntu中。看看man logrotate(或者如果你没有安装它,请查看在线联机帮助页或使用 安装它sudo apt-get install logrotate

从联机帮助页:

logrotate 旨在简化对生成大量日志文件的系统的管理。它允许自动轮换、压缩、删除和邮寄日志文件。每个日志文件可以每天、每周、每月或当它变得太大时处理。


msa*_*ord 11

如果要清除所有日志文件,而不仅仅是一级日志文件夹中的日志文件,可以使用:

shopt -s globstar                  # if needed
truncate -s 0 /var/log/*.log       # first-level logs
truncate -s 0 /var/log/**/*.log    # nested folders, like /var/log/nginx/access.log
Run Code Online (Sandbox Code Playgroud)

请注意,如果您已经logrotate运行,则还需要清除轮换.gz日志:

find /var/log -type f -name '*.[0-99].gz' -exec rm {} +
Run Code Online (Sandbox Code Playgroud)

例如,一个有效的用途可能是构建一个用于分发的 VM 设备容器。

你应该不会需要做到这一点作为日常维护的一部分:如DEN非常正确建议,用logrotate了点。