#!/bin/bash
( tail -f -n0 /proc/loadavg 2> /dev/null & ) | grep -q "^[1-9]"
echo 'The millenium crystals are gunna blow!'
我以为我很聪明,那会起作用的。它只是挂起并且永远不会做出反应,除非从运行开始并且第一个字符是[1-9]
答案1
tail
确实寻找新行,而不是换行:
-f, --follow[={name|descriptor}]
output appended data as the file grows;
如果您想亲自验证此行为,可以使用此命令更改以下行testfile
:
while true ; do
sed "s/^.*$/$(date)/" -i testfile
sleep 1
done
您可以使用 wile 循环来检查行更改:
while true ; do
grep -q "^[1-9]" /proc/loadavg && echo "$message"
sleep 1
done
答案2
我认为您可以将 tail 与 grep 结合使用来进行更改,而不仅仅是新行。
在我来到这里之前,我刚刚读到 /proc/loadavg 实际上不是一个文件,而是一个内核接口,也许你是对的,但即使可以,我仍然会很高兴。
我希望收到 inotify 通知,而不是不断循环的负载,但似乎计算机拒绝了。