Processos y Redes Conceptos básicos
Siempre que se activa un utilitario o un programa en Linux, el
sistema inicia un proceso. Un proceso, es un programa en ejecución.
Un mismo programa puede iniciar varios procesos. Linux, como
sistema multitarea, permite la ejecución de varios procesos e
simultaneo. El kernel de Linux se encarga de escalonar los recursos
para la ejecución de varios procesos en el sistema. En caso que
exista hardware multiprocesado (varios cpu's), es posible tener
procesos siendo ejecutados en paralelo. Un proceso puede iniciar
varios procesos hijos, siendo el proceso inicial denominado de
proceso padre (líder).
Para todo y cualquier programa que el usuario inicia a partir del
prompt, es iniciado un proceso, hijo de ese shell. Linux crea una
jerarquía de procesos donde existen procesos dependientes del
proceso líder.
La unión de varios procesos es definida como sesión.
Comandos Relacionados
Existen varios comandos relacionados con los procesos; a seguir se
encuentram los mas importantes: ps; kill, killall.
ps
Es utilizado para visualizar procesos del sistema. El
comando presenta procesos del usuario, de otros usuarios y del
sistema. Si el comando es usado sin parámetros mostrará solamente
los procesos del usuario en la sesión actual, en formato resumido,
como se puede ver a seguir:
[alumno@maquina alumno]$ ps
PID TTY TIME CMD
20771 pts/0 00:00:00 sh
20773 pts/0 00:00:00 bash
20776 pts/0 00:00:00 ps
Si es necesario, es posible tener más informaciones sobre los
procesos en ejecución, utilizando el parámetro [u], como se observa
a seguir:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
Alumno 20805 0.0 0.6 1688 828 pts/0 S 16:22 0:00 /bin/sh
/home/alumno/figura
alumno 20807 0.0 0.8 1788 1064 pts/0 S 16:22 0:00 bash
alumno 20821 0.0 0.6 2512 828 pts/0 R 16:25 0:00 ps u
Donde consta por columna, usuario, número del proceso, % cpu usado,
% de memoria usada, tamaño total del programa (VSZ), memoria usada
por programa (RSS), terminal, status, fecha de inicio (start),
tiempo de cpu y comando.
Kill
Por el nombre mismo se puede pensar que el comando kill
mata aplicaciones. El objetivo del comando es, enviar señales a los
procesos.
Existen varias señales que pueden ser enviados a una aplicación;
entre ellos se destacan los siguientes:
* SIGKILL
* SIGTSTP
* SIGHUP
El formato básico del comando es indicado a seguir:
kill [-señal ] pid
kill - up pid -> actualiza los procesos sin matar
Donde -señal, es la señal a ser enviado al proceso; puede estar en
formato texto o numérico. La correlación entre señales y números
puede ser vista ejecutando el siguiente comando:
[alumno@maquina alumno)$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4)
SIGILL 5) SIGTRAP 6) SIGIOT 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
El pid es el número de proceso para el cual se desea enviar la
señal y ese número puede ser conseguido, por ejemplo, usando el
siguiente comando:
[alumno@maquina alumno]$ ps x
PID TTY STAT TIME COMMAND
20576 ttyl S 0:00 -bash
20595 ttyl S 0:00 sh /usr/X11R6/bin/startx
20602 ttyl S 0:00 xinit /etc/X11/xinit/xinitrc -- :0
-auth /home/alumno/.Xauthority
20606 ttyl S 0:03 /usr/X11R6/bin/wmaker
20619 ttyl SN 0:03 wmsetbg -helper -d
20620 ttyl S 0:00 wmclock
20621 ttyl S 3:16 wmmon -s
20622 ttyl S 0:00 mount.app
20623 ttyl S 0:00 wmtime
20624 ttyl S 0:01 /usr/bin/licq
20765 ttyl S 1:04 emacs -geometry 167x54 -font 9xl5 *.sgml
20860 ttyl S 0:00 xterm -font l0x20 -geometry 100x35+0+0
-e
Todas las señales pasan por el kernel. Cuando es enviado cualquier
señal para un proceso esta señal va para el kernel que lo envía al
proceso de destino. La señal SIGKILL, cuando es enviado para un
proceso, termina su ejecución. En realidad, lo que sucede es que el
kernel, cuando recibe la señal, no le repasa al proceso, y si,
elimina el proceso directamente. La señal SIGTSTP suspende la
ejecución de un programa.
Cuando existe un programa en ejecución en foreground y se desea
suspender su procesamiento basta enviar esta señal; se puede usar
las teclas Ctrl-z. Por ejemplo, está siendo ejecutado el comando
vi; si dentro del programa se digita esa secuencia de teclas, la
aplicación suspenderá su procesamiento. Si es utilizado el comando
sin el parametro -pid, será enviado al proceso la señal SIGTERM o
termínate, posiblemente terminando su ejecución. Otra señal muy
usada es el SIGHUP, cuyo objetivo es hacer con que el proceso lea
nuevamente sus archivos de configuración, como si estuviesen
inicializados. Esto permite que se altere la configuración del
sistema o de servicios del sistema sin que ellos tengan que ser
desactivados. Entre los servicios que utilizan estas señales
podemos destacar el inetd, httpd y otros. Por ejemplo, para
eliminar una aplicación basta utilizar la siguiente secuencia de
comandos:
[alumno@maquina alumno]$ ps
PID TTY TIME CMD
20959 pts/0 00:00:00 sh
20961 pts/0 00:00:00 bash
20966 pts/0 00:00:00 vi
20967 pts/0 00:00:00 ps
[alumno@maquina alumno]$ kill -9 20966 [1]+ Killed
Primero se debe descubrir el PID de la aplicación y a seguir
utilizarlo en el comando kill.
Killall
Envía la señal a los procesos usando el nombre y no el número. Si
existiesen varios procesos con el mismo nombre todos ellos
recibirán la señal. El formato básico de l comando es mostrado a
seguir:
killall [-señal] [nombre]
Por ejemplo, para eliminar una aplicación se utiliza la siguiente
secuencia de comandos: [alumno@maquina alumno]$ killall -9 vi [1]+
Killed vi
Como se puede observar, es mucho mías práctico; sin embargo se
corre el riesgo de eliminar todos los procesos que estén siendo
ejecutados con el comando vi.
1. Linux - Unix. Sistema operativo multiusuario (primera parte) En este curso de Sistemas Operativos Linux - Unix aprenderás acerca de la historia... [08/10/08] |
8.070 | ||||
2. Linux - Unix. Sistema operativo multiusuario (segunda parte) En esta segunda parte de nuestro curso de sistemas operativos Unix-Linux... [08/10/08] |
4.045 | ||||
3. Linux - Unix. Sistema operativo multiusuario (tercera parte) En este tercera parte de nuestro curso de sistemas operativos Unix-Linux aprenderás... [08/10/08] |
3.216 |