Захват 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 
Другие вопросы по тегам