我有一个脚本,它监视dmesg
并在特定日志消息后杀死进程
#!/bin/bash
while sleep 1;
do
# dmesg -w | grep --max-count=1 -q 'protocol'
dmesg -w | sed '/protocol/Q'
mkdir -p /home/user/dmesg/
eval "dmesg -T > /home/user/dmesg/dmesg-`date +%d_%m_%Y-%H:%M`.log";
eval "dmesg -c";
pkill -x -9 programm
done
问题是sed
和grep
只在两个消息后触发。因此,仅在一条消息后,脚本将不会继续。
我错过了什么吗?
您有一个定期执行dmesg
的脚本。相反,编写一个脚本来监视dmesg的输出。
dmesg | while IFS= read -r line; do
case "$line" in
*protocol*)
echo "do something when line has protocol"
;;
esac
done
考虑阅读https://mywiki.wooledge.org/BashFAQ/001。