All pastes #2093887 Raw Edit

Something

public text v1 · immutable
#2093887 ·published 2011-11-11 22:29 UTC
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