我有一个包含崩溃日志的目录,并且我想在基于查找命令的bash脚本中使用条件语句。
日志文件以以下格式存储:
/var/log/crashes/app-2012-08-28.log
/var/log/crashes/otherapp-2012-08-28.log
我希望if语句仅在存在最近5分钟内已修改的特定应用程序的崩溃日志时才返回true。find
我将使用的命令是:
find /var/log/crashes -name app-\*\.log -mmin -5
我不确定如何if
正确地将其合并到语句中。我认为这可能有效:
if [ test `find /var/log/crashes -name app-\*\.log -mmin -5` ] then
service myapp restart
fi
我不清楚一些地方:
- 我已经看过if标志,但是我不确定应该使用哪一个(如果有的话)。
- 我是否需要该
test
指令,还是应该直接针对find命令的结果进行处理,还是可以find... | wc -l
用来获取行数? - 回答这个问题不是100%必要的,而是
test
用于测试命令返回的返回码吗?而且它们在stdout
/ 之外是看不见的stderr
。我阅读了该man
页面,但对于何时使用test
以及如何对其进行调试仍然不清楚。
... -exec command ';' -quit
,但我认为除了解析结果外,没有其他解决方案。同样,在这两种情况下,解析结果的主要问题find
(即无法将分隔符与文件名中的字符区分开)都不适用,因为在这些情况下您无需查找分隔符。
find ... -exec
。另请参阅“ 为什么循环遍历find的输出错误做法”