尝试(理论上)尾随最后两行(-n 2)的日志文件,然后继续使用if / then语句。当然,这将是一个将从launchctl .plist中调用的脚本。
基本上它看起来像是在我脑海中,虽然它不对......
#!/bin/sh
last-entry= tail -n 2 command # show only last two lines of log file
if last-entry is less than (<) two lines, then
execute command here
fi
答案 0 :(得分:0)
如果你要做的是测试该文件包含完全两行,那么你只想使用wc -l
并在标准输入上提供内容(以避免{{ 1}}像往常一样打印出文件名。)
wc
通过标准输入提供#!/bin/sh
if [ "$(wc -l < /private/var/log/accountpolicy.log)" -ne 2 ]; then
exit
fi
# Do whatever you want when it does contain exactly two lines here.
文件非常重要,因为正常调用(例如wc -l
)wc -l filename
“帮助”打印行数和文件名到标准输出,因此需要字段拆分/等。获得适合比较的数字。当wc
正在读取标准输入时,它没有文件名,因此不会这样做。
只有wc
完成执行后不关心文件的实际内容,这种做法才 安全
如果使用该文件的其他部分中的文件内容,则这是一个典型的检查时间使用漏洞。有关此主题的更多信息,请参阅MITRE网站上的this page和this Wikipedia entry。