gpt4 book ai didi

bash - 从 cron 作业创建空的 catalina.out(基于刚刚删除的 catalina.out)

转载 作者:行者123 更新时间:2023-11-28 23:21:45 31 4
gpt4 key购买 nike

我有一个 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 部分。

如果有任何想法,我将不胜感激。谢谢!

最佳答案

为什么不直接使用类似的东西:

for f in $(find /apache-tomcat-blah*/. -name catalina.out -size +1000M); do
rm $f
touch $f
done

因此您的find 命令现在在子shell $() 中执行,并且您的bash 脚本遍历输出(文件列表)并删除每个(通过 rm) 并创建一个新的(通过 touch)

如果您的文件中有空格,您需要小心上述情况(注意)。

关于bash - 从 cron 作业创建空的 catalina.out(基于刚刚删除的 catalina.out),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42675300/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com