我有一个bash脚本,一旦文件超过一定大小,就会成功删除一个或多个tomcat日志目录(我们运行多个实例)的catalina.out文件。我每晚都把这个剧本作为一个cron工作。它基本上是这样的:
find /apache-tomcat-blah*/. -name catalina.out -size +1000M -delete
但是,我的问题是,我需要在删除旧版本后立即自动创建一个新的空文件。
挑战是我不会提前知道删除了tomcat实例的catalina.out。另外,我不想假设我知道对应于/ apache-tomcat-blah * /的所有tomcat实例。我们会不时更改它们。
我假设find命令知道它刚刚删除了什么(也许我不应该假设),这样我理论上可以将这些信息传输到:
$ echo "" > /apache-tomcat-justDeletedFromDir/logs/catalina.out
如果我能弄清楚该字符串中 apache-tomcat-justDeletedFromDir 的内容。
我会感激任何想法。谢谢!
答案 0 :(得分:0)
为什么不使用类似的东西:
for f in $(find /apache-tomcat-blah*/. -name catalina.out -size +1000M); do
rm $f
touch $f
done
所以你的find
命令现在在子shell $()
中执行,你的bash脚本遍历输出(文件列表)并删除每一个(通过rm
)和创建一个新的(通过touch
)
如果您的文件中有空格,请注意上述内容(注意)。