Захват 4 элемента /proc/stat строки CPU в sh
Я не могу записать CPU[3] в переменную IDLE в сценарии оболочки (/bin/sh)
Фрагмент кода, как показано ниже:-
while true; do
CPU=$(sed -n 's/^cpu\s//p' /proc/stat)
**IDLE=$CPU[3]** # Just the idle CPU time.
for VALUE in ${CPU} ;
do
TOTAL=$((TOTAL+VALUE))
printf "%s \n\n" $VALUE
sleep 1
printf "%s \n" $IDLE
done
sleep 0.1
done
1 ответ
Решение
Вы можете попробовать сценарий ниже для извлечения определенных строковых элементов из команды sed.
#!/bin/sh
CPU=$(sed -n 's/^cpu\s//p' /proc/stat)
IDLE=$((sed -n 's/^cpu\s//p' /proc/stat)| (cut -d' ' -f5))
printf "IDLE Check %s \n" $IDLE
printf "CPU: %s \n" $CPU
Но я вижу, что извлеченное значение увеличивается на единицу, я изучу это и обновлю через некоторое время, удачи!!!
Я получаю результат, как показано ниже:
IDLE Check 286857 /*value is incremented by 2 , i will update in while on this */
CPU: 32898
CPU: 6
CPU: 8128
CPU: 286855 /* This value is to be extracted as example */
CPU: 27052
CPU: 0
CPU: 462
CPU: 0
CPU: 0
CPU: 0