我需要创建一个while
循环,如果dmesg
返回某个/任何值,那么它将终止已确定的进程。
这就是我所拥有的。
#!/bin/bash
while [ 1 ];
do
BUG=$(dmesg | grep "BUG: workqueue lockup" &> /dev/null)
if [ ! -z "$BUG" ]; then
killall someprocessname
else
break
fi
done
我不知道该! -z
不该做[ test -n "$BUG" ]
我认为使用-n表示期望二进制。
我不知道该脚本是否还能工作,因为BUG锁定会中止每个进程,但是dmesg
在计算机完全崩溃之前,仍然有几行内容-也许我可以追赶并杀死该进程。
2
您将整个dmesg都花了,所以一旦出现搜索字符串的一次,您就不会每次看到它,因此在每个循环中都将其杀死!(除了提及@ l0b0的其他事项,例如缺少睡眠/起搏等)
—
Olivier Dulac