每天使用 cron 任务清空日志文件

Empty log files daily using cron task

我想每天在特定时间清空(而不是删除)日志文件。像

echo "" > /home/user/dir/log/*.log

但是 returns

-bash: /home/user/dir/log/*.log: ambiguous redirect

有什么办法可以实现吗?

您不能重定向到多个文件,但可以tee重定向到多个文件。

tee /home/user/dir/log/*.log </dev/null

来自 /dev/null 的重定向也避免了在每个文件的开头写入一个空行,这是您尝试中的另一个错误。 (不过,如果通配符不匹配任何现有文件,也许指定 nullglob 以避免创建名称为 *.log 的文件。)

然而,一个更好的解决方案可能是使用每个 Debian(以及 Ubuntu、Mint 等)安装时开箱即用的实用程序 logrotate。它默认每晚运行,可以通过在其配置目录中放置一个文件来进行配置。它可以让您压缩以前版本的日志文件,而不仅仅是覆盖,并注意保留所有权和权限等。