如何使用 tail 来获取高于 0.99% loadav 的通知?

如何使用 tail 来获取高于 0.99% loadav 的通知?
#!/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 通知,而不是不断循环的负载,但似乎计算机拒绝了。

相关内容