#!/bin/bash # Carlos Ferry Sauterel - Ingenieria Ejecución Informática # MODELNAME=$( awk '/model name/ {print $4; count++; if (count == 1) exit}' < /proc/cpuinfo ) KERNELVERSION=$( awk '/Linux version/ {print $3}' < /proc/version ) MEMINFO=$( awk '/MemTotal/ {print $2}' < /proc/meminfo ) # Si el primer parametro es -ps # if [ "-ps" = "$1" ]; then # Listamos directorios que comienzen con número echo "UID PID PPID STATUS CMD" for i in `ls /proc |grep '^[0-9]'` do PID=$i if [ -f "/proc/$i/status" ]; then STATUS=$(awk '/State/ { print $3 } ' < /proc/$i/status | sed -e 's/(//' | sed -e 's/)//' ) UID=$( awk '/Uid/ { print $2 } ' < /proc/$i/status ) USERNAME=$(getent passwd $UID| sed -e 's/:.*//') PPID=$( awk '/PPid/ { print $2 } ' < /proc/$i/status ) else STATUS="NULL" UID="NULL" USERNAME="NULL" PPID="NULL" fi if [ -f "/proc/$i/cmdline" ]; then CMDLINE=$( awk ' { print $1 } ' < /proc/$i/cmdline ) else CMDLINE="NULL" fi echo "$USERNAME $PID $PPID $STATUS $CMDLINE" done fi if [ "-c" = "$1" ]; then printf '%s %25s %27s %28s %28s %22s\n' "Name" "Data(kB)" "Stack(kB)" "Text(kB)" "VolCtxtSwitches" "NonVolCtxtSwitches" for i in `ls /proc |grep '^[0-9]'` do if [ -f "/proc/$i/status" ]; then NAME=$( awk '/Name/ { print $2 } ' < /proc/$i/status | sed -e 's/^[ \t]*//' ) STACK=$( awk '/VmStk/ { print $2 } ' < /proc/$i/status | sed -e 's/^[ \t]*//' ) VOLCTXTSWITCHES=$( awk '/voluntary_ctxt_switches/ { print $2 } ' < /proc/$i/status | sed -e 's/^[ \t]*//' ) NONVOLCTXTSWITCHES=$( awk '/nonvoluntary_ctxt_switches/ { print $2 } ' < /proc/$i/status | sed -e 's/^[ \t]*//' ) DATA=$( awk '/VmData/ { print $2 } ' < /proc/$i/status | sed -e 's/^[ \t]*//' ) TEXT=$( awk '/VmExe/ { print $2 } ' < /proc/$i/status | sed -e 's/^[ \t]*//' ) else NAME="NULL" STACK="NULL" DATA="NULL" TEXT="NULL" VOLCTXTSWITCHES="NULL" NONVOLCTXTSWITCHES="NULL" fi printf '%s %25d %27d %28d %28d %22d\n' $NAME $DATA $STACK $TEXT $NONVOLCTXTSWITCHES $NONVOLCTXTSWITCHES done fi if [ "-help" = "$1" ]; then echo "Uso" echo " " echo "./$0, Muestra informacion relativa al nombre del modelo, version de kernel y datos de memoria" echo " " echo "./$0 -ps, Muestra informacion relativa a los procesos corriendo, su estado, PPID, PID y comando ejecutado" echo " " echo "./$0, Muestra informacion relativa al tamaño de segmentos" fi # Si no está definido el primer parametro # if [ -z "$1" ]; then echo "ModelName: $MODELNAME" echo "KernelVersion: $KERNELVERSION" echo "Memory: $MEMINFO" fi