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

标签 bash tomcat cron

我有一个 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/

相关文章:

docker - Docker 容器中的时间

django - AWS + Django 定时任务

php - 如果任何作业失败,Cron 作业会自动重试

java - 自动配置 Java 以使用分配给其 Docker 容器的最大 RAM

java - 为什么我在尝试连接到 URL 时收到 'HTTP Version Not Supported' 回复?

bash - 提取两个模式之间的线并包括第一个上方和第二个下方的线

java - Tomcat session cookie 不会过期

tomcat - 用于文件上传的 URL 重写 Tomcat

java - bash:jar:找不到命令

bash - 从包含路径的变量中删除当前目录