每天使用 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
。它默认每晚运行,可以通过在其配置目录中放置一个文件来进行配置。它可以让您压缩以前版本的日志文件,而不仅仅是覆盖,并注意保留所有权和权限等。
我想每天在特定时间清空(而不是删除)日志文件。像
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
。它默认每晚运行,可以通过在其配置目录中放置一个文件来进行配置。它可以让您压缩以前版本的日志文件,而不仅仅是覆盖,并注意保留所有权和权限等。