evaluación Estructural del Puente San Alejandro, Distrito de Irazola, Provincia Padre Abad, Región UcayaliDescripción completa
Case Digest
Bases de datosDescripción completa
Formulación de un proyecto de desarrollo PROYECTO DE DIRECCIONAMIENTO ESTRATÉGICO DEL ÁREA DE FORMACIÓN PARA EL TRABAJO Y DESARROLLO HUMANO DE LA FUNDACIÓNDescripción completa
Case Digest
Descripción: bibliografía de Jaime Mejía Duque
Descripción: Derecho
Descrição completa
Descrição completa
WD
Full description
Descripción completa
Full description
Descripción: WD
Descripción completa
Descripción: Pràctica de Llenguatges i Estàndards Web. Grau en Multimèdia. UOC
Descripción: Pràctica de Fonaments dels Nous Mitjans - NEGROPONTE & MANOVICH. Grau en Multimèdia. UOC
MEMORIA PRACTICA 1
DISEÑO Y ADMINISTRACIÓN DE SISTEMAS OPERATIVOS Mitop.sh Explicaci Expli cación ón general del funcionamiento del programa: El programa se divi de en 3 partes: -La primera prime ra parte parte recopila la información inf ormación de carácter carácter general del ordenador y que se muestra inmediatamente inme diatamente en la cabecera (memoria (memori a usada, libre y total), porcentaje de uso de la l a CPU y otra información info rmación que se usara usara más adelante, adel ante, como el tamaño de página. -La segunda segund a parte parte es un bucle que recorre todas las carpetas numéricas de /proc y en el cual se recopila información inf ormación respectiva respectiva al tiempo de ejecución e jecución de los procesos y se espera e spera 1 segundo (Esto es necesario ne cesario para un cálculo correcto del porcentaje de uso de la CPU) -La tercera y última últi ma parte parte consta de un bucle bucl e que recorre una vez más todas las l as carpetas carpetas numéricas de /proc y en el e l que se recopilan recopil an o calculan todos los datos datos necesarios ne cesarios de cada proceso para mostrar por pantalla la información inf ormación necesaria para la práctica.
Explicaci Expli cación ón detallada detalla da del funcionamiento del programa: programa: Parte 1: Cabecera:
Obtenemos los l os datos del número de procesos de la l a cantidad cantidad de carpetas numéricas que se encuentra encuentra en ./proc y lo imprimimos numProcs=" numProcs="$( $( ls -l | awk aw k '{print '{print $9} $9}'' |grep -e '9\>' '9\>' -e '8\>' '8\>' -e '9\>' '9\>' -e '7\>' -e '6\>' -e '5\>' -e '4\>' '4\>' -e '3\>' -e '2\>' -e '1\>' -e '0\>'| w c -l)" echo -e '\e[1;33mNum '\e[1;33mNumero ero de proces pro cesos: os: \e[0m' $numPro $numProcs cs Obtenemos la memoria disponible del archivo stat de de la carpeta carpeta ./proc y calculamos la memoria usada y la mostramos memtotal=${MAPFILE[0]#*:} memtotal="${memtotal::-3}" memtotal=${memtotal//[[:blank:]]/} memfree=${MAPFILE[1]#*:} memfree="${memfree::-3}"
Además, guardamos los datos del tamaño de página y de los ticks ttime=$(getconf CLK_TCK) mapped=$(cat /proc/meminfo | grep ^M apped | awk '{print $2}') nrM apped=$(awk '/nr_mapped/ {print $2}' < /proc/vmstat) pageSize=$(($mapped/$nrMapped))
Parte 2: Pri mer Bucle:
Iniciamos el contador a 1 Obtenemos la lista de procesos y el número de procesos procs="$( ls -l | awk '{print $9}' |grep -e '9\>' -e '8\>' -e '9\>' -e '7\>' -e '6\>' -e '5\>' -e '4\>' -e '3\>' -e '2\>' -e '1\>' -e '0\>' | paste -sd "," -)" IFS=',' total=`ls -la /proc | awk '{print $9}' | grep "[0-9]" | w c -l`
Recorremos la lista de procesos y obtenemos el tiempo de ejecución en modo usuario y modo núcleo del archivo stat y los sumamos para calcular el tiempo total de ejecución modoNucleo[$contador]=$(cat "/proc/$pid/stat" 2> /dev/null | awk '{ print $14 }') modoU suario[$contador]=$(cat "/proc/$pid/stat" 2> /dev/null | aw k '{ print $15 }') enUsuario=${modoUsuario[$contador]} enNucleo=${modoNucleo[$contador]} if [ -z $enUsuario ] || [ -z $enNucleo ]; then echo > /dev/null else
Realizamos un bucle para obtener todos los datos de todos los procesos w hile [ $contador -le $total ]; do
Obtenemos el identificador del usuario que invoco al proceso de su archivo stat y l o almacenamos en variable id=`awk '/Uid/ {print $2}' 2> /dev /null < /proc/$pid/status`
A continuación, para obtener su nombre lo comparamos con el archivo /etc/passwd y lo guardamos en una variable user=`awk -F : -v v ar="$id" '{ if ($3 == v ar) print $1}' /etc/passwd` prior=$(awk '{print $18}' 2> /dev/null < /proc/$pid/stat)
Obtenemos su prioridad de su archivo stat y la almacenamos en una variable prior=$(awk '{print $18}' 2> /dev/null < /proc/$pid/stat)
Obtenemos la cantidad de memoria virtual del proceso de su archivo stat y la almacenamos en variable mVirt=$(awk '{print $23}' 2> /dev/null < /proc/$pid/stat)
Obtenemos el estado del proceso de su archivo stat y lo almacenamos en variable est=$(awk '{print $3}' 2> /dev/null < /proc/$pid/stat)
Obtenemos el nombre del programa que invoca al proceso de su archivo stat y lo almacenamos en variable comm=$(awk '{print $2}' 2> /dev /null < /proc/$pid/stat | sed 's/^.\|.$//g')
Alejandro Duque Quintana
Calculamos el porcentaje de memoria usada por el proceso obteniendo el valor y multiplicándolo por el tamaño de página y dividiéndolo por la memoria total rss=$(awk '{print $24}' 2> /dev/null < /proc/$pid/stat) if [ -z $rss ] || [ $rss -eq 0 ]; then mem=0 else mem=$(echo "scale = 3; (($rss*$pageSize)/$memtotal)*100" | bc 2> /dev /null | awk '{printf "%.2f", $0}' | aw k '{if($0 ~ /\./) sub("\\.*0+$","");print}') fi tiempo=$(awk '{print $22}' 2> /dev/null < /proc/$pid/stat) 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 uptime=$(awk '{print $1}' < /proc/uptime) segundos=$((${uptime%.*}-$tiempo/ $ttime)) TI ME=$(printf '%dh:%dm:%ds\n' $(($segundos/3600)) $(($segundos%3600/60)) $(($segundos%60)))
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. cutime=$(aw k '{print $16}' 2> /dev /null < /proc/$pid/stat) cstime=$(awk '{print $17}' 2> /dev/null < /proc/$pid/stat) starttime=$(awk '{print $22}' 2> /dev/null < /proc/$pid/stat) modoNucleo[$contador]=$(cat "/proc/$pid/stat" 2> /dev/null | awk '{print $14 }') modoU suario[$contador]=$(cat "/proc/$pid/stat" 2> /dev/null | awk '{print $15 }') enUsuario=${modoUsuario[$contador]} 2> /dev/null enNucleo=${modoNucleo[$contador]} 2> /dev/null if [ -z $enUsuario ] || [ -z $enNucleo ]; then