Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Mitop.sh
-La primera parte recopila la información de carácter general del ordenador y que se muestra
inmediatamente en la cabecera (memoria usada, libre y total), porcentaje de uso de la CPU y
otra información que se usara más adelante, como el tamaño de página.
-La segunda parte es un bucle que recorre todas las carpetas numéricas de /proc y en el cual se
recopila información respectiva al tiempo de ejecución de los procesos y se espera 1 segundo
(Esto es necesario para un cálculo correcto del porcentaje de uso de la CPU)
-La tercera y última parte consta de un bucle que recorre una vez más todas las carpetas
numéricas de /proc y en el que se recopilan o calculan todos los datos necesarios de cada
proceso para mostrar por pantalla la información necesaria para la práctica.
Obtenemos los datos del número de procesos de la cantidad de carpetas numéricas que se
encuentra en ./proc y lo imprimimos
memtotal=${MAPFI LE[0]#*:}
memtotal="${memtotal::-3}"
memtotal=${memtotal//[[:blank:]]/}
memfree=${MAPFILE[1]#*:}
memfree="${memfree::-3}"
memused="$(($memtotal - $memfree))"
echo -e "$memline"
ttime=$(getconf CLK_TCK)
pageSize=$(($mapped/$nrMapped))
Iniciamos el contador a 1
I FS=','
enUsuario=${modoUsuario[$contador]}
enNucleo=${modoNucleo[$contador]}
else
Realizamos un bucle para obtener todos los datos de todos los procesos
do
mem=0
else
fi
if [ -z $tiempo ]; then
tiempo=0
fi
Calculamos el tiempo total en ejecución del procesador restando al instante hasta el que
estuvo activo el instante que se inicio y lo pasamos a horas y minutos
segundos=$((${uptime%.*}-$tiempo/ $ttime))
Calculamos el porcentaje de uso del procesador para ello restamos el tiempo en ejecución
total del procesador, la nueva medición la medición antigua y lo dividimos entre los ticks del
reloj.
if [ -z $enUsuario ] || [ -z $enNucleo ];
then
else
totalTiempo2[$contador]=$((${modoNucleo[$contador]}+${modoUsuari
o[$contador]}))
if [ -z ${totalTiempo2[$contador]} ] || [ -z
${totalTiempo1[$contador]} ];
then
else
totalTiempo2[$contador]=$((${totalTiempo2[$contador]}-
${totalTiempo1[$contador]})) 2> /dev /null
totalTiempo2[$contador]=$((${totalTiempo2[$contador]}+$cutime+$csti
me))
totaltime[$contador]=$(echo "scale = 2;
${totalTiempo2[$contador]} / $ttime" | bc)
ttseg[$contador]=$(echo "scale = 3;
${totaltime[$contador]}/$segundos" | bc)
ttseg[$contador]=$(echo "scale = 3;
${totaltime[$contador]}/$segundos" | bc)
CPU[$contador]=$(echo "scale = 2;
${ttseg[$contador]}*100" | bc | aw k '{printf "%.2f", $0}')
printf "%-10s %-10s %-10s %-10s %-10s %-10s %-10s %-11s %-10s\n"
"$pid" "$user" "$prior" "$mVirt" "$est" "${CPU[$contador]}" "$mem" "$TIME" "$comm"