Está en la página 1de 16

Procesos y Seales

David Galn Ortiz. www.opensolarisblog.org dgalan@opensolarisblog.org

< Spain OpenSolaris Users Groups >

<OrangeBooks>

USE

IMPROVE

EVANGELIZE

Spain OpenSolaris Users Group

LICENCIA.................................................................................................................3 Referencias ........................................................................................................3 PROCESOS Y SEALES.........................................................................................4 INTRODUCCIN ...........................................................................................................4 VER LOS PROCESOS EN EJECUCIN..................................................................................5 EL COMANDO PRSTAT....................................................................................................7 SEALES....................................................................................................................8 Ejempo de kill:...................................................................................................9 Seal en curso..................................................................................................10 RBOL DE PROCESOS...................................................................................................11 INFORMACIN SOBRE PROCESOS:...................................................................................12 VER LAS LIBRERAS EN USO POR UN PROCESO...............................................................12 DESCRIPTORES DE FICHEROS ABIERTOS .........................................................................13 MAPA DE ESPACIO DE DIRECCIONES...............................................................................14 INFORMACIN SOBRE LAS CPU...................................................................................15 INFORMACIN SOBRE LAS CPU...................................................................................15

Spain OpenSolaris Users Group

Licencia
Esta obra est bajo una licencia Reconocimiento-NoComercialSinObraDerivada-2.5 Espaa de Creative Commons. Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-nc-nd/2.5/es o enve una carta a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,USA. Usted es libre de: Copiar, distribuir y comunicar pblicamente la obra.

Bajo las condiciones siguientes:

Reconocimiento. Debe reconocer los crditos de la obra de la manera especificada por el autor o el licenciador. No comercial. No puede utilizar esta obra para fines comerciales. Oras derivadas. Debe reconocer los crditos de la obra de la manera

especificada por el autor o el licenciador. Al reutilizar o distribuir la obra, tiene que dejar bien claro los trminos de la licencia de esta obra.
Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor.

Referencias
Todos los nombres propios de programas, sistemas operativos, equipos hardware, etc., que aparecen en este libro son marcas registradas de sus respectivas compaas u organizaciones.

Spain OpenSolaris Users Group

Procesos y seales
Introduccin En este capitulo veremos como gestiona Solaris los procesos que no difiere mucho del resto de unix existentes en el mercado. Igualmente si provienes de Linux te resultar fcil adaptarte a las singularidades de Solaris. Cada programa que se ejecuta en el sistema se corresponde con uno o varios procesos. Solaris como cualquier sistema multiusuario permite a cualquier usuario ejecutar ms de un proceso simultneamente, los procesos de un mismo usuario pueden comunicarse entre si pero no con los procesos de otro usuario. El usuario root es el nico que puede comunicarse con todos los procesos en ejecucin. Cada proceso est identificado por un PID nico y a su vez tienen asociado un identificador de usuario (UID) y su grupo (GID).

Spain OpenSolaris Users Group

Ver los procesos en ejecucin Uno de los comandos mas habituales para un administrador de sistemas es sin duda el comando ps. El comando ps nos permite ver los procesos en ejecucin en el sistema y obtener informacin de cada uno de ellos. Veamos un ejemplo de la ejecucin del comando ps ef:
UID PID PPID C STIME TTY TIME CMD root 0 0 0 23:51:57 ? 30:42 sched root 1 0 0 23:51:58 ? 0:00 /sbin/init root 2 0 0 23:51:58 ? 0:00 pageout root 3 0 0 23:51:58 ? 0:01 fsflush daemon 223 1 0 23:52:18 ? 0:00 /usr/sbin/rpcbind root 7 1 0 23:51:58 ? 0:10 /lib/svc/bin/svc.startd root 45 1 0 23:52:02 ? 0:00 /sbin/dhcpagent root 9 1 0 23:51:58 ? 0:19 /lib/svc/bin/svc.configd root 230 1 0 23:52:18 ? 0:00 /usr/lib/dmi/dmispd root 419 1 0 23:52:29 ? 0:00 /usr/lib/autofs/automountd root 139 1 0 23:52:14 ? 0:00 /usr/lib/sysevent/syseventd root 71 1 0 23:52:09 ? 0:00 /usr/sfw/sbin/snmpd

Veamos la informacin que nos aporta la salida del comando: ! ! ! ! ! ! UID: usuario propietario del proceso. PID: nmero de identificacin del proceso. PPID: nmero que identifica el proceso padre. STIME: fecha en la que se arranc el proceso. TTY: terminal del proceso. CMD: programa en ejecucin.

La siguiente tabla muestra los parmetros ms tiles para utilizar con el comando ps: Parmetro -a Funcin Muestra los procesos mas solicitados.
5

Spain OpenSolaris Users Group

-e -f -p -u -c -G

Muestra todos los procesos en ejecucin. Muestra informacin procesos. ampliada de los

Muestra el ID de la CPU asociada al proceso. Muestra todos los procesos de un usuario especfico. Muestra los datos con formato planificacin y prioridad de procesos. Muestra los procesos ejecutados por un grupo.

Los siguientes ejemplos muestran el uso del comando ps: Para ver los procesos pertenecientes al usuario aulaunix:
bash-3.00$ ps -u aulaunix PID TTY TIME CMD 712 pts/1 0:00 bash 733 pts/1 0:00 ps 682 ? 0:01 sshd 684 pts/1 0:00 sh

Muestra los datos en formato planificacin:


bash-3.00$ ps -c PID CLS PRI TTY TIME CMD 712 TS 49 pts/1 0:00 bash 734 TS 49 pts/1 0:00 ps 684 TS 59 pts/1 0:00 sh

La opcin ejecutada en el ejemplo con c muestra informacin interesante como los valores CLS que indica el tipo de prioridad y PRI que muestra la prioridad del proceso.

Muestra los procesos en ejecucin del grupo aulaunix:


6

Spain OpenSolaris Users Group

bash-3.00$ grep -i aulaunix /etc/group aulaunix::100: bash-3.00$ ps -G 100 PID TTY TIME CMD 712 pts/1 0:00 bash 742 pts/1 0:00 ps 682 ? 0:01 sshd 684 pts/1 0:00 sh

Observa que el grupo es indicado con su GID que hemos obtenido mirando su valor en el fichero /etc/group.

El comando prstat El comando prstat muestra informacin de los procesos en ejecucin ordenados por el uso de CPU. Ejemplo de la ejecucin del comando prstat:
bash-3.00$ prstat PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP 668 noaccess 159M 80M sleep 59 0 0:00:29 0,5% java/24 744 aulaunix 4492K 2644K cpu0 39 0 0:00:00 0,4% prstat/1 682 aulaunix 7952K 2100K sleep 59 0 0:00:00 0,0% sshd/1 712 aulaunix 2484K 1612K sleep 49 0 0:00:00 0,0% bash/1 131 root 3824K 2360K sleep 59 0 0:00:00 0,0% nscd/24 535 root 4444K 1724K sleep 59 0 0:00:00 0,0% dtlogin/1 670 root 7096K 2076K sleep 59 0 0:00:00 0,0% sendmail/1 1 root 2024K 1120K sleep 59 0 0:00:00 0,0% init/1 269 root 4416K 3052K sleep 59 0 0:00:03 0,0% inetd/4 278 root 2820K 1140K sleep 59 0 0:00:00 0,0% sh/1 214 root 2272K 900K sleep 59 0 0:00:00 0,0% cron/1 143 daemon 3932K 1968K sleep 59 0 0:00:00 0,0% kcfd/3 111 root 2156K 1296K sleep 59 0 0:00:00 0,0% snmpdx/1 258 root 1700K 896K sleep 59 0 0:00:00 0,0% sac/1 71 root 6556K 4572K sleep 59 0 0:00:00 0,0% snmpd/1 Total: 43 processes, 180 lwps, load averages: 0,02, 0,03, 0,31

Spain OpenSolaris Users Group

En la siguiente lista puedes ver la informacin aportada por la ejecucin del comando: ! ! ! ! ! ! ! ! ! PID: identificador del proceso. USERNAME: propietario del proceso. SIZE: memoria virtual utilizada por el proceso. STATE: estado del proceso, los estados del proceso pueden ser cpu, sleep, run, zombie y stop. PRI: prioridad del proceso. NICE: valor para el calculo de la prioridad del proceso. TIME: tiempo total que lleva el procesos ejecutandose. CPU: porcentaje de CPU utilizado por el proceso. PROCCESS: nombre del proceso.

El comando prstat proporciona diversos parmetros para obtener mas informacin, los parmetros mas tiles son: ! ! ! -t: muestra informacin agrupada por usuario. -p [PID]: muestra solo la informacin para un solo proceso identificado por su PID. -n: nmero mximo de procesos mostrados.

Seales

Spain OpenSolaris Users Group

Los procesos en ejecucin puede ser necesario detenerlos por que su funcionamiento no es el esperado, no responden o cualquier otra causa. El comando kill nos permite enviar una seal al proceso para que se detenga. Las seales que podemos enviar son:
Nombre SIGHUP Nmero de seal. Descripcin

Seal de corte de seal, interrumpir la seal de la conexin telefnica o un terminal. Seal de Control-C (procedente del teclado) Seal de eliminacin ningn proceso puede ignorar esta seal. Finalizar proceso de forma ordenada. Ejemplo para una BDDD, LDAP etc.. para que cierre las conexiones, ficheros etc..

SIGINT SIGKILL SIGTERM

2 9 15

Formato de kill: kill seal pidproceso Ejempo de kill: Matar una sesin ssh:
# adtasweb01 /var/opt/aat/d#ps -ef | grep ssh root 449 1 0 Aug 20 ? 1:01 /usr/local/sbin/sshd root 25618 449 0 17:51:52 ? 0:00 /usr/local/sbin/sshd -R ora9 18084 18082 0 20:25:28 ? 0:00 /usr/local/sbin/sshd -R ora9 8645 8476 0 20:22:26 ? 0:00 /usr/local/sbin/sshd R # kill -9 25618 #

La seal SIGHUP comnmente conocida como interrumpir una conexin telefnica o de Terminal, esta seal puede provocar en servicios como inetd que relean el fichero de configuracin.
9

Spain OpenSolaris Users Group

Seal en curso En algn momento puede interesarnos ver todas las seales enviadas a un proceso en ejecucin para ello recurrimos al comando psig. Formato: psig pid Ejemplo de psig:
#psig 13936 13936: /usr/lib/ssh/sshd HUP default INT default QUIT default ILL default TRAP default ABRT default EMT default FPE default KILL default BUS default SEGV default SYS default PIPE ignored ALRM caught 0x2d7fc TERM default USR1 default USR2 default CLD caught 0x40f14 PWR default WINCH default URG default

RESETHAND,NODEFER

Seales de proceso:
Nombre SIGHUP Nmero de seal. Descripcin

Seal de corte de seal, interrumpir la seal de la conexin telefnica o un terminal. Seal de Control-C (procedente del teclado) Seal de eliminacin ningn proceso puede ignorar esta seal.
10

SIGINT SIGKILL

2 9

Spain OpenSolaris Users Group

SIGTERM

15

Finalizar proceso de forma ordenada. Ejemplo para una BDDD, LDAP etc.. para que cierre las conexiones, ficheros etc.. Salir Instruccin ilegal. Punto de ruptura Abortar Trap de emulacin Excepcin aritmtica Error en bus Fallo de segmentacin Llamada al sistema errnea Pipe rota Finalizada

SIGINT SIGILL SIGTRAP SIGABRT SIGEMT SIGFPE SIGBUS SIGSEGV SIGSYS SIGPIPE SIGALRM

3 4 5 6 7 8 10 11 12 13 14

rbol de procesos Disponemos de un comando llamado ptree que nos permite ver los procesos de forma jerrquica es decir podemos ver los procesos hijos desplegados de forma arbrea. El comando ptree se lanza sin opciones, veamos el ejemplo de su ejecucin:
adtasbac01 /opt/na#ptree 51 /usr/lib/sysevent/syseventd 60 /usr/lib/picl/picld 137 /usr/lib/sparcv9/cpudiagd -i 174 /usr/sbin/rpcbind 197 /usr/sbin/inetd -s 326 rpc.metad 5089 in.telnetd 5094 -ksh 11

Spain OpenSolaris Users Group

16041 bash 28382 bash 15728 ptree 22123 in.telnetd 22125 -ksh 23114 bash 218 /usr/lib/nfs/statd 219 /usr/lib/nfs/lockd 221 /usr/lib/autofs/automountd 224 /usr/lib/autofs/automountd 235 /usr/sbin/syslogd 242 /usr/sbin/cron 263 /usr/sbin/nscd 266 /usr/lib/power/powerd

Informacin sobre procesos: A continuacin vamos a ver una serie de comandos que nos aportaran informacin sobre los procesos en ejecucin.

Ver las libreras en uso por un proceso. Para averiguar las libreras en uso por un proceso recurrimos al comando pldd: pldd [PID del proceso] El siguiente ejemplo muestra las libreras utilizadas por el proceso 6171 perteneciente a un servicio web de Sun Java:
# pldd 6717 6717: ../../bin/https/bin/Cgistub -f /tmp/https-admserv-98ccc083/.cgistub_88 /usr/lib/libsocket.so.1 /usr/lib/libnsl.so.1 /usr/lib/libC.so.5 /usr/lib/libm.so.1 /usr/lib/libw.so.1 12

Spain OpenSolaris Users Group

/usr/lib/libc.so.1 /usr/lib/libdl.so.1 /usr/lib/libmp.so.2 /usr/platform/sun4u-us3/lib/libc_psr.so.1

Descriptores de ficheros abiertos El comando pfiles lista todos los descriptores de ficheros abiertos por un proceso: pfiles [PID del proceso] El resultado de la ejecucin del comando pfiles para un servicio web es la siguiente:
# pfiles 6717 6717: ../../bin/https/bin/Cgistub -f /tmp/https-admserv-98ccc083/.cgistub_88 Current rlimit: 1024 file descriptors 1: S_IFCHR mode:0666 dev:85,1 ino:72269 uid:0 gid:3 rdev:13,2 O_RDWR 2: S_IFCHR mode:0666 dev:85,1 ino:72269 uid:0 gid:3 rdev:13,2 O_RDWR 4: S_IFSOCK mode:0666 dev:264,0 ino:5333 uid:0 gid:0 size:0 O_RDWR sockname: AF_UNIX /tmp/https-admserv-98ccc083/.cgistub_882 peername: AF_UNIX

13

Spain OpenSolaris Users Group

Mapa de espacio de direcciones El comando pmap mustrela el uso que hace de la memoria un proceso mostrando una mapa del espacio de direcciones: pmap [PID del proceso ] El siguiente ejemplo muestra la salida del comando pmap:
#pmap 6717 6717: ../../bin/https/bin/Cgistub -f /tmp/https-admserv-98ccc083/.cgistub_88 00010000 24K read/exec /opt/app/SunWeb/ /bin/https/bin/Cgistub 00024000 8K read/write/exec /opt/app/SunWeb/ 0/bin/https/bin/Cgistub 00026000 8K read/write/exec [ heap ] FF080000 688K read/exec /usr/lib/libc.so.1 FF13C000 32K read/write/exec /usr/lib/libc.so.1 FF1B0000 224K read/exec /usr/lib/libm.so.1 FF1F6000 8K read/write/exec /usr/lib/libm.so.1 FF200000 312K read/exec /usr/lib/libC.so.5 FF25C000 32K read/write/exec /usr/lib/libC.so.5 FF264000 64K read/write/exec /usr/lib/libC.so.5 FF280000 576K read/exec /usr/lib/libnsl.so.1 FF310000 40K read/write/exec /usr/lib/libnsl.so.1 FF31A000 24K read/write/exec /usr/lib/libnsl.so.1 FF330000 16K read/exec /usr/lib/libmp.so.2 FF344000 8K read/write/exec /usr/lib/libmp.so.2 FF350000 8K read/write/exec /usr/lib/libdl.so.1 FF360000 8K read/exec /usr/platform/sun4u-us3/lib/libc_psr.so.1 FF370000 8K read/write/exec [ anon ] FF380000 40K read/exec /usr/lib/libsocket.so.1 FF39A000 8K read/write/exec /usr/lib/libsocket.so.1 FF3A0000 8K read/exec /usr/lib/libw.so.1 FF3B0000 192K read/exec /usr/lib/ld.so.1 FF3E0000 8K read/write/exec /usr/lib/ld.so.1 FF3E2000 8K read/write/exec /usr/lib/ld.so.1 14

Spain OpenSolaris Users Group

FFBEA000 24K read/write/exec total 2376K

[ stack ]

Informacin sobre las CPU A continuacin veremos una serie de comandos que nos permiten observar los procesos y la carga de trabajo de las CPU del sistema. El comando ps pero en versin BSD alojado en /usr/ucb nos permite ver el consumo de CPU y memoria de los procesos: /usr/ucb/ps -aux El siguiente ejemplo muestra los diez primeros procesos que mas consumen recursos, se ha aade el comando head para que solo muestra los diez primeros resultados:
/#usr/ucb/ps -aux |head USER PID %CPU %MEM SZ RSS TT S START TIME COMMAND root 792 0.5 0.271760 3528 ? S Aug 24 588:50 /usr/lib/mixer_app root 3 0.4 0.0 0 0 ? S Aug 24 842:00 fsflush j.vazque 20211 0.4 0.1 3040 1632 ? S 12:39:01 0:00 /usr/local/bin/cvs root 790 0.2 1.713910434080 ? S Aug 24 230:50 /usr/bin/java -jar root 438 0.2 1.04366418752 ? S Aug 24 189:06 /usr/openwin/bin/X root 607 0.2 0.314600 5968 pts/2 S Aug 24 197:45 /usr/lib/gconfd-2 root 937 0.1 0.164576 1576 ? S Aug 24 144:52 /usr/lib/at-spi-re root 677 0.1 0.176912 1800 ? S Aug 24 147:34 gnome-panel --sm-c root 20213 0.1 0.1 1384 952 pts/6 O 12:39:33 0:00 usr/ucb/ps aux

Informacin sobre las CPU Los comandos psinfo y mpstat nos muestran estadsticas sobre el estado de las CPU del sistema: mpstat muestra la actividad de las CPU de forma individual, veamos la ejecucin del comando mpstat:
15

Spain OpenSolaris Users Group

CPU minf mjf xcal intr ithr csw icsw migr smtx srw syscl usr sys wt idl 1 7 1 120 412 309 168 4 21 3 0 638 1 4 0 95 3 7 1 13 115 107 179 7 21 3 0 633 1 3 0 96

La informacin ms importante que vemos en el resultado de la ejecucin del comando es: ! ! ! ! ! ! mjf que corresponde con fallos importantes. minf que corresponde con fallos de menor importancia. xcal aporta informacin sobre la llamada entre las CPU. intr indica el nmero de interrupciones. wt indica en % el tiempo consumido por los procesos de usuario. sys tiempo de CPU consumido por los procesos del sistema.

El comando psrinfo mostrar el estado de las CPU y cuando se iniciaron. Ejemplo de la salida del comando psrinfo:
#psrinfo 0 on-line 1 on-line 2 on-line 3 on-line 4 on-line 5 on-line 6 on-line 7 on-line 16 on-line 17 on-line 18 on-line 19 on-line 20 on-line 21 on-line 22 on-line 23 on-line

since 10/04/07 09:03:13 since 10/04/07 09:03:13 since 10/04/07 09:03:13 since 10/04/07 09:03:13 since 10/04/07 09:03:13 since 10/04/07 09:03:13 since 10/04/07 09:03:13 since 10/04/07 09:03:01 since 10/04/07 09:03:13 since 10/04/07 09:03:13 since 10/04/07 09:03:13 since 10/04/07 09:03:13 since 10/04/07 09:03:13 since 10/04/07 09:03:13 since 10/04/07 09:03:13 since 10/04/07 09:03:1

16

También podría gustarte