rendered paste body#!/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
echo "Name Data(kB) Stack(kB) Text(kB) VolCtxtSwitches NonVolCtxtSwitches"
for i in `ls /proc |grep '^[0-9]'`
do
PPID=$( awk '/PPid/ { print $2 } ' < /proc/$i/status )
PID=$i
UID=$( awk '/Uid/ { print $2 } ' < /proc/$i/status )
USERNAME=$(getent passwd $UID| sed -e 's/:.*//')
CMDLINE=$( awk ' { print $1 } ' < /proc/$i/cmdline )
echo "$USERNAME $PID $PPID $STATUS $CMDLINE"
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