我正在使用top
命令计算 CPU利用率并同时使用gnuplot
绘制输出。我正在从top
命令获取数据对于cpu_util.txt
中的CPU利用率,并将该数据汇总到data.txt
。
这是我的shell脚本CPU.sh
write_data(){
top -b -n 1 |awk 'FNR>7 '| awk '{print $9}'>/home/vivek/project/cpu_util.txt
a="$(cat /proc/cpuinfo | grep 'cpu cores' | wc -l)"
awk '{s+=$1} END {printf "%.0f\n", (s/'"${a}"')}' /home/vivek/project/cpu_util.txt>>/home/vivek/project/data.txt
sleep 5
}
write_file(){
while :
do
write_data
done
}
plot_data()
{
gnuplot liveplot.gnu
}
write_data
write_file &
plot_data
这是我的gnuplot文件liveplot.gnu
set title "CPU utilization"
plot "../data.txt" with lines title 'usage in %'
pause 5
reread
当我同时运行write_file
和plot_data
时。当我停止此脚本时,plot_data
会停止,但write_file
会在后台执行。
我不明白为什么该脚本仍在运行,如何在退出脚本的同时停止write_file
。
答案 0 :(得分:0)
写一个清理函数并捕获信号。将其附加到文件末尾。
function finish {
pkill -f write_file
pkill -f plot_data
exit
}
trap finish SIGHUP SIGINT SIGTERM
sighup,sigint和sigterm用于停止进程。您也可以使用其他信号