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
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