Sunteți pe pagina 1din 7

PROCESOS Podramos definir a los procesos como programas que estn corriendo en nuestro Sistema Operativo.

Dependiendo de la forma en que corren estos programas se los puede clasificar en tres grandes categoras: Pocesos Normales Procesos Daemon Procesos Zombies PROCESOS NORMALES Los procesos de tipo normal generalmente son lanzados en una terminal (tty) Y corren a nombre de un usuario. PROCESOS DAEMON Los procesos de tipo daemon corrren a nombre de un usuario y no tienen salida directa por una terminal, es decir corren en 2 plano. Generalmente los conocemos como servicios. La gran mayora de ellos en vez de usar la terminal para escuchar un requerimiento lo hacen a travs de un puerto. PROCESOS ZOMBIES Todos los procesos que corren en nuestro Sistema Operativo dependen del primer proceso que se lanza despus del arranque: el proceso init, el padre de todos los procesos. Muchas veces los procesos no son nicos sino que dan lugar a muchos procesos secundarios. Tericamente el padre de cada uno de ellos debera en todo momento vigilar que es lo que hacen estos hijos. Si por alguna razn este padre falla en el control se pueden llegar a producir procesos de tipo zombie que pueden llenar el rbol de procesos, ocasionando que tengamos que reiniciar el equipo. Podemos ver el rbol de procesos? En nuestro Sistema Operativo est representado en el directorio /proc, que es una estructura de arbol virtual que genera y monta nuestro kernel durante el arranque. En virtud de esto, cada vez que querramos ver un proceso debemos mirar por esta ventana que nos muestra realmente qu es lo que est ocurriendo con nuestro kernel. Para ver el estado de los procesos en el sistema operativo tenemos varios comandos. COMANDO ps Este comando es el encargado de mostrar todos los procesos que estn ocurriendo en el sistema. Este comando no es interactivo, saca una foto de los procesos que estn corriendo en ese mismo momento. Es como una imgen que se congela y la vemos en la pantalla; pero un segundo despus puede estar ocurriendo cualquier otra cosa. Este comando tiene varias opciones: [root@equipo1 root]# ps PID TTY TIME CMD 969 tty2 00:00:00 login 1383 tty2 00:00:00 bash 1430 tty2 00:00:00 ps

Si no usamos ninguna opcin, este comando nos muestra lo que est ocurriendo en una terminal determinada. Podemos ver que cada proceso tiene un nmero que lo identifica dentro del sistema, tiene una tty... pero no sabemos si es la nica terminal activa o hay ms, para eso usamos el parmetro a: [root@equipo1 root]# ps -a PID TTY TIME CMD 1119 tty1 00:00:00 bash 1166 tty1 00:00:00 startx 1174 tty1 00:00:00 xinit 1179 tty1 00:00:02 icewm 1383 tty2 00:00:00 bash Para saber si adems de los que vemos correr hay otros procesos en segundo plano, podemos usar el parmetro u. Nos da un estado del proceso y que cantidad de recursos de la CPU est requiriendo cada uno. [root@equipo1 root]# ps -u USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.1 1384 60 ? S 16:48 0:05 init root 2 0.0 0.0 0 0 ? SW 16:48 0:00 [keventd] root 3 1.9 0.0 0 0 ? SW 16:48 1:27 [kapm-idled] root 4 0.0 0.0 0 0 ? SWN 16:48 0:00 [ksoftirqd_CPU0] root 5 0.0 0.0 0 0 ? SW 16:48 0:00 [kswapd] root 6 0.0 0.0 0 0 ? SW 16:48 0:00 [kreclaimd] root 7 0.0 0.0 0 0 ? SW 16:48 0:00 [bdflush] root 8 0.0 0.0 0 0 ? SW 16:48 0:00 [kupdated] root 9 0.0 0.0 0 0 ? SW< 16:48 0:00 [mdrecoveryd] root 13 0.0 0.0 0 0 ? SW 16:48 0:01 [kjournald] root 507 0.0 0.5 1444 156 ? S 16:48 0:00 syslogd -m 0 root 513 0.0 0.0 1928 4 ? S 16:48 0:01 klogd -2 root 673 0.0 0.0 1368 4 ? S 16:49 0:00 /usr/sbin/apmd -p 10 -w root 738 0.0 0.0 1504 4 ? S 16:49 0:00 /sbin/cardmgr root 756 0.0 0.0 2652 4 ? S 16:49 0:01 /usr/sbin/sshd root 789 0.0 0.0 2244 4 ? S 16:49 0:00 xinetd -stayalive -reus root 829 0.0 1.2 5276 372 ? S 16:49 0:00 sendmail: accepting con root 848 0.0 0.2 1412 76 ? S 16:49 0:00 gpm -t ps/2 -m /dev/mou root 866 0.0 0.3 1568 116 ? S 16:49 0:00 crond root 1175 1.0 10.4 12332 3152 ? S< 17:01 0:37 /etc/X11/X :0 root 1204 0.0 7.4 6064 2236 ? S 17:02 0:00 xterm root 1462 0.0 3.3 2208 1016 ? S 18:02 0:00 /bin/bash -c (ps -u) < root 1469 0.0 2.4 2620 732 ? R 18:02 0:00 ps -u Ahora incluyamos la informacin de los demonios y procesos sin terminal. Lo hacemos con el parmetro x: [root@equipo1 root]# ps -x PID TTY STAT TIME COMMAND 1 ? S 0:05 init 2 ? SW 0:00 [keventd] 3 ? SW 1:32 [kapm-idled] 4 ? SWN 0:00 [ksoftirqd_CPU0] 5 ? SW 0:00 [kswapd] 6 ? SW 0:00 [kreclaimd]

7 ? SW 0:00 [bdflush] 8 ? SW 0:00 [kupdated] 9 ? SW< 0:00 [mdrecoveryd] 13 ? SW 0:01 [kjournald] 507 ? S 0:00 syslogd -m 0 513 ? S 0:01 klogd -2 673 ? S 0:00 /usr/sbin/apmd -p 10 -w 5 -W -P /etc/sysconfig/apm-scripts/ 738 ? S 0:00 /sbin/cardmgr 756 ? S 0:01 /usr/sbin/sshd 789 ? S 0:00 xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid 829 ? S 0:00 sendmail: accepting connections 848 ? S 0:00 gpm -t ps/2 -m /dev/mouse 866 ? S 0:00 crond 969 tty2 S 0:00 login -- root 970 tty3 S 0:00 /sbin/mingetty tty3 971 tty4 S 0:00 /sbin/mingetty tty4 972 tty5 S 0:00 /sbin/mingetty tty5 973 tty6 S 0:00 /sbin/mingetty tty6 1118 tty1 S 0:00 login -- root 1119 tty1 S 0:00 -bash 1166 tty1 S 0:00 /bin/sh /usr/X11R6/bin/startx 1174 tty1 S 0:00 xinit /etc/X11/xinit/xinitrc -1175 ? S< 0:43 /etc/X11/X :0 1179 tty1 S 0:02 icewm 1204 ? S 0:00 xterm 1207 pts/0 S 0:00 bash 1268 ttyq0 S 0:37 gvim 1383 tty2 S 0:00 -bash 1472 ? S 0:00 /bin/bash -c (ps -x) < /tmp/v97175/11 >/tmp/v97175/12 2>&1 1479 ? R 0:00 ps -x Ahora pongamos todo junto! [root@equipo1 root]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.1 1384 60 ? S 16:48 0:05 init root 2 0.0 0.0 0 0 ? SW 16:48 0:00 [keventd] root 3 1.9 0.0 0 0 ? SW 16:48 1:33 [kapm-idled] root 4 0.0 0.0 0 0 ? SWN 16:48 0:00 [ksoftirqd_CPU0] root 5 0.0 0.0 0 0 ? SW 16:48 0:00 [kswapd] root 6 0.0 0.0 0 0 ? SW 16:48 0:00 [kreclaimd] root 7 0.0 0.0 0 0 ? SW 16:48 0:00 [bdflush] root 8 0.0 0.0 0 0 ? SW 16:48 0:00 [kupdated] root 9 0.0 0.0 0 0 ? SW< 16:48 0:00 [mdrecoveryd] root 13 0.0 0.0 0 0 ? SW 16:48 0:01 [kjournald] root 507 0.0 0.5 1444 156 ? S 16:48 0:00 syslogd -m 0 root 513 0.0 0.0 1928 4 ? S 16:48 0:01 klogd -2 rpc 533 0.0 0.0 1528 4 ? S 16:48 0:00 portmap rpcuser 561 0.0 0.0 1576 4 ? S 16:49 0:00 rpc.statd root 673 0.0 0.0 1368 4 ? S 16:49 0:00 /usr/sbin/apmd -p 10 -w root 738 0.0 0.0 1504 4 ? S 16:49 0:00 /sbin/cardmgr root 756 0.0 0.0 2652 4 ? S 16:49 0:01 /usr/sbin/sshd root 789 0.0 0.0 2244 4 ? S 16:49 0:00 xinetd - stayalive -reus root 829 0.0 1.2 5276 372 ? S 16:49 0:00 sendmail: accepting con root 848 0.0 0.2 1412 76 ? S 16:49 0:00 gpm -t ps/2 -m /dev/mou

root 866 0.0 0.3 1568 116 ? S 16:49 0:00 crond xfs 918 0.0 4.7 4884 1436 ? S 16:49 0:00 xfs -droppriv daemon daemon 954 0.0 0.1 1416 48 ? S 16:49 0:00 /usr/sbin/atd root 969 0.0 3.5 2300 1076 tty2 S 16:49 0:00 login -- root root 970 0.0 0.0 1356 4 tty3 S 16:49 0:00 /sbin/mingetty tty3 root 971 0.0 0.0 1356 4 tty4 S 16:49 0:00 /sbin/mingetty tty4 root 972 0.0 0.0 1356 4 tty5 S 16:49 0:00 /sbin/mingetty tty5 root 973 0.0 0.0 1356 4 tty6 S 16:49 0:00 /sbin/mingetty tty6 root 1118 0.0 1.1 2300 340 tty1 S 17:01 0:00 login -- root root 1119 0.0 2.1 2500 644 tty1 S 17:01 0:00 -bash root 1166 0.0 0.5 2196 164 tty1 S 17:01 0:00 /bin/sh /usr/X11R6/bin/ root 1174 0.0 0.0 2316 4 tty1 S 17:01 0:00 xinit /etc/X11/xinit/xi root 1175 1.2 10.4 12332 3152 ? S< 17:01 0:47 /etc/X11/X :0 root 1179 0.0 7.4 5348 2228 tty1 S 17:01 0:02 icewm root 1204 0.0 7.4 6064 2236 ? S 17:02 0:00 xterm root 1207 0.0 3.6 2704 1112 pts/0 S 17:02 0:00 bash root 1268 1.0 16.5 8740 4980 ttyq0 S 17:03 0:40 gvim root 1383 0.0 4.5 2500 1360 tty2 S 17:55 0:00 -bash root 1480 0.0 3.3 2208 1016 ? S 18:07 0:00 /bin/bash -c (ps -aux) root 1487 0.0 2.7 2764 828 ? R 18:07 0:00 ps -aux Otro parmetro interesante es el f que nos permite ver los procesos en forma de rbol, determinando procesos padre y todos los procesos hijos. [root@equipo1 root]# ps -axf PID TTY STAT TIME COMMAND 8 ? SW 0:00 [kupdated] 7 ? SW 0:00 [bdflush] 6 ? SW 0:00 [kreclaimd] 5 ? SW 0:01 [kswapd] 4 ? SWN 0:00 [ksoftirqd_CPU0] 1 ? S 0:05 init 2 ? SW 0:00 [keventd] 3 ? SW 1:27 [kapm-idled] 9 ? SW< 0:00 [mdrecoveryd] 13 ? SW 0:01 [kjournald] 507 ? S 0:00 syslogd -m 0 513 ? S 0:01 klogd -2 533 ? S 0:00 portmap 561 ? S 0:00 rpc.statd 673 ? S 0:00 /usr/sbin/apmd -p 10 -w 5 -W -P /etc/sysconfig/apm-scripts/ 738 ? S 0:00 /sbin/cardmgr 756 ? S 0:01 /usr/sbin/sshd 789 ? S 0:00 xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid 829 ? S 0:00 sendmail: accepting connections 848 ? S 0:00 gpm -t ps/2 -m /dev/mouse 866 ? S 0:00 crond 918 ? S 0:00 xfs -droppriv -daemon 954 ? S 0:00 /usr/sbin/atd 968 tty1 S 0:00 login -- root 976 tty1 S 0:00 \_ -bash 1022 tty1 S 0:00 \_ /bin/sh /usr/X11R6/bin/startx 1030 tty1 S 0:00 \_ xinit /etc/X11/xinit/xinitrc -1031 ? S< 0:14 \_ /etc/X11/X :0 1035 tty1 S 0:02 \_ icewm 1467 ? S 0:00 \_ xterm

1469 pts/0 S 0:00 | \_ bash 1509 ? S 0:00 \_ xterm 1511 pts/1 S 0:00 \_ bash 969 tty2 S 0:00 /sbin/mingetty tty2 970 tty3 S 0:00 /sbin/mingetty tty3 971 tty4 S 0:00 /sbin/mingetty tty4 972 tty5 S 0:00 /sbin/mingetty tty5 973 tty6 S 0:00 /sbin/mingetty tty6 1500 ttyq0 R 0:05 gvim 1550 ? S 0:00 \_ /bin/bash -c (ps -axf) < /tmp/v236933/0 >/tmp/v236933/1 1557 ? R 0:00 \_ ps -axf COMANDO pstree Este comando nos muestra el rbol de procesos y el nmero que el Sistema le otorga a cada uno. [root@equipo1 root]# pstree -p init(1)-+-apmd(673) |-atd(954) |-cardmgr(738) |-crond(866) |-gpm(848) |-gvim(1500)---bash(1558)---pstree(1565) |-kapm-idled(3) |-keventd(2) |-kjournald(13) |-klogd(513)

|-login(968)---bash(976)---startx(1022)---xinit(1030)-+-X(1031) | `-icewm(1035)-+-xterm(1467)---bash(1469) | `-xterm(1509)---bash(1511) |-mdrecoveryd(9) |-mingetty(969) |-mingetty(970) |-mingetty(971) |-mingetty(972) |-mingetty(973) |-portmap(533) |-rpc.statd(561) |-sendmail(829) |-sshd(756) |-syslogd(507) |-xfs(918) `-xinetd(789) Aqui solo podemos ver de qu poceso depende el programa en el cual estamos trabajando. En mi caso particular estoy escribiendo en el editor gvim (PID 1500) y dentro del editor ejecut el comando pstree (PID 1565)

SEALES COMANDO kill Como administradores del Sistema necesitamos saber en todo momento lo que ocurre y necesitamos poder comunicarnos de alguna manera con los procesos para controlarlos. Cada uno de los procesos en curso, pueden recibir de nosotros una serie de seales representadas aqu por el comando kill o killall. Con ellas podemos decirle a un proceso que termine inmediatamente o si es un servicio que se reinicie. Las seales son muchas y son usadas por los programadores para tener control total sobre sus programas. Las vamos a enumerar y probaremos las que ms vamos a usar. Las seales se pueden enumerar con el comando kill y el parametro l: [root@equipo1 root]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 32) SIGRTMIN 33) SIGRTMIN+1 34) SIGRTMIN+2 35) SIGRTMIN+3 36) SIGRTMIN+4 37) SIGRTMIN+5 38) SIGRTMIN+6 39) SIGRTMIN+7 40) SIGRTMIN+8 41) SIGRTMIN+9 42) SIGRTMIN+10 43) SIGRTMIN+11 44) SIGRTMIN+12 45) SIGRTMIN+13 46) SIGRTMIN+14 47) SIGRTMIN+15 48) SIGRTMAX-15 49) SIGRTMAX-14 50) SIGRTMAX-13 51) SIGRTMAX-12 52) SIGRTMAX-11 53) SIGRTMAX-10 54) SIGRTMAX-9 55) SIGRTMAX-8 56) SIGRTMAX-7 57) SIGRTMAX-6 58) SIGRTMAX-5 59) SIGRTMAX-4 60) SIGRTMAX-3 61) SIGRTMAX-2 62) SIGRTMAX-1 63) SIGRTMAX Las de mayor uso para nosotros van a ser las nmero 1,9 y 15 que son las de: reiniciar, terminar y matar respectivamente. Para pasar una seal a un proceso necesito conocer el PID (Proces ID Nmero del Proceso), de ah la importacia del comando ps. Imaginemos que tenemos corriendo en una terminal una aplicacin o un comando y esa aplicacin o comando no responde a nada (se colg). Lo que tendremos que hacer es preguntarle al Sistema Operativo cul es el PID de ese proceso colgado y despus pasarle la seal de terminacin o de matar. Realicemos el siguiente ejercicio: - Loguense en otra terminal y ejecuten el Midnight Commander (mc), sta es una aplicacin parecida al Norton Commander de DOS. Despus vuelvan a la consola anterior y ejecuten el comando ps -aux para ver cul es el PID del mc. Una vez que lo hicieron, corran el comando kill -15 <PID del mc>. Observen que donde antes estaba el cursor ahora dice Terminated. Repeten los pasos pero ahora usen kill -9 <PID del MC>, observen los resultados.

COMANDO Killall Para enviar seales a los servicios puedo usar el comando killall. Este comando no nos pide el PID, nos basta con poner el nombre de la aplicacin. [root@equipo1 root]# killall httpd Con esto nos ahorramos el paso de ejecutar el ps para saber cul es el PID.

S-ar putea să vă placă și