Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Administracin de Procesos
Introduccin
Un punto importante a tomar en cuenta cuando se trabaja con un sistema operativo, es la cantidad de recursos que se estn utilizando. Estos recursos pueden ser por ejemplo capacidad de procesamiento o memoria, cuyo consumo afecta el rendimiento de la computadora. Este consumo de recursos es realizado por todos procesos que se estn ejecutando en la computadora. En esta unidad describiremos la forma cmo Linux trata los procesos, y cmo gestionar y monitorear el uso de los recursos de procesamiento y memoria.
Administracin de Procesos
Objetivos
Entender como trabajan los procesos. Entender la genealoga de procesos en Linux. Entender el concepto de procesos Demonios. Entender el concepto de procesos Hurfanos y Difuntos. Utilizar herramientas de monitoreo del sistema. Realizar control de procesos. Realizar automatizacin de tareas.
Administracin de Procesos
Contenido
Definicin de Proceso. Genealoga de Procesos. Procesos Demonios. Procesos Hurfanos y Difuntos. Herramientas de Monitoreo: ps, free, top, w, sar. Control de procesos. Automatizacin de tareas: at y crontab.
Administracin de Procesos
Procesos
Un proceso es un programa en ejecucin. Todos los programas que corren bajo Linux son procesos. Por ejemplo, el Shell de un usuario, como bash, es un proceso que se ejecuta mientras est conectado al sistema. Los procesos pueden ser sncronos o asncronos. Los procesos sncronos se ejecutan uno despus de otro, esto se llama tambin Proceso en Foreground. En cambio los procesos asncronos se pueden ejecutar simultneamente con otro procesos, esto se llama tambin Proceso en Background.
Administracin de Procesos
Procesos: PID
Cada proceso es identificado por un ID: PID: Process Identification Cada proceso tiene un proceso padre identificado por: PPID: Parent Process Identification
Proceso
Un nmero identificador, (Process ID o PID), identificador de proceso. Es necesario para referirnos a un proceso en concreto de los varios en ejecucin. Un PPID (Identificador del proceso padre), es el nmero que indica qu proceso cre al proceso en cuestin. Un estado; habr momentos en los que un proceso seguir existiendo en el sistema, pero no estar haciendo nada realmente. Puede estar esperando a que una SEAL le sea enviada (sobre lo que trataremos ms tarde) para volverse activo, o a nosotros como usuarios nos puede interesar detenerlo o pausarlo bajo determinadas circunstancias. Los estados ms importanes son dormido (S), y en ejecucin (R). Un dueo, generalmente es el usuario que lo ejecut, y como ya se dijo, el proceso hereda los permisos del usuario de cara al sistema de ficheros. Si un ejecutable es SUID, al ejecutarse, el proceso resultante adquiere los permisos del usuario dueo del archivo. Generalmente, un usuario normal no puede ejercer control sobre procesos que no le pertenecen. Una prioridad que determina su importancia. Ya vimos que no todos los procesos eran igual de importantes. Veremos cmo cambiar la prioridad de un proceso ms adelante.
Administracin de Procesos
Procesos: PID
Cuando un proceso es creado se le asigna un nmero (PID) y es aadido a la tabla de procesos y cuando el proceso concluye es retirado de la tabla. Linux mantiene en memoria una tabla de procesos, con informacin de los procesos activos.
TABLA DE PROCESOS
.............. .......... .............. ..........
NPROC
Administracin de Procesos
LILO
Linux
init
login
mingetty
xdm
Sistema X Windows
BIOS
bash
Intrprete de comandos
8
Segn el orden de inicio durante el arranque del sistema Linux observamos que despus de cargar la imagen del kernel se inicia el primer proceso del sistema, el proceso Init. Este proceso es el padre de todos los procesos, el inicia el resto de procesos; desde los necesarios para iniciar una interfaz en lnea de comandos, hasta los procesos necesarios para iniciar una interfaz grfica. Otros procesos luego sern iniciados por diferentes programas y por el usuario. Todos estarn debajo de Init, el proceso raz.
Administracin de Procesos
Genealoga de Procesos
Un proceso que genera nuevos procesos es llamado padre. El nuevo proceso es llamado proceso hijo. El proceso mingetty es hijo del proceso init. Muchos procesos son creados por el Shell, bash en la mayora de distribuciones Linux, el cual crea procesos hijos para ejecutarlos. init
Proces o Padre
bash
Proces o Padre
mingetty
Proces o Hijo
cat
Proces o Hijo
9
Administracin de Procesos
Genealoga de Procesos
En Linux los procesos se crean mediante una llamada (call) al sistema, la peticin crea otro proceso: fork.
HIJO PPID bash 1 PPID PPID PID1 PPID 1 300 200 PPID exec(date) date 1 PPID PPID PID1 PPID 1 300 200 exit( )
fork( )
wait(hijo)
Al ejecutar un comando como date se realiza los siguientes eventos: El proceso (en este caso bash) crea una copia de si mismo: fork ( ). El nuevo proceso ser el proceso hijo. El nuevo proceso se sobrescribe con el programa a ejecutar (en este caso date): exec ( ). Cuando el proceso termina, muestra la fecha y la hora, invoca a la funcin exit: exit ( ). El proceso padre espera a que el proceso hijo termine: wait ( ). Una vez que el proceso hijo muere el proceso padre continua trabajando.
Administracin de Procesos
10
Procesos Demonios
Son procesos que el sistema inicia para realizar tareas bsicas en forma peridica. Estos procesos no estn asociados con un terminal (tty) en particular. Algunos procesos demonios conocidos son los siguientes: init (PID 1) : Padre de todos los procesos cron : Tareas automtica lpd : Demonio de Impresin LPR
11
Un demonio (o servicio) es un proceso en background que esta designado a correr autnomamente con un poco o nada de intervencin del usuario. Un ejemplo es el demonio http (httpd), este espera en background escuchando en puertos especficos y sirve paginas o scripts de acuerdo a la peticin que se le haga.
Administracin de Procesos
11
Proceso Init
Es el proceso padre de todos los procesos del sistema. Permanece en ejecucin mientras funciona el sistema. Durante el proceso de encendido lee el archivo de configuracin /etc/inittab que inicia el resto de procesos. Hay varios niveles de ejecucin, desde 0 hasta 6, los cuales se puede invocar manualmente. # init <nivel_ejecucin> Ejemplo:
# init 0 # init 1
12
El programa /sbin/init no forma parte de ncleo de Linux, es el primer programa de usuario (su PID es 1). Despus de iniciado el kernel, init coordina el resto del proceso de arranque. Cuando el comando init inicia, se transforma en el padre (o en el abuelo) de todos los procesos que se producen automticamente en el sistema. Siempre que el nivel de ejecucin cambia, init utiliza los scripts de /etc/rc.d/init.d para iniciar e interrunpir diferentes servicios, como puedan ser el servidor de red, el servidor DNS, etc.
Administracin de Procesos
12
13
Administracin de Procesos
13
Herramientas de Monitoreo
Los programas utilizados en el monitoreo del sistema son los siguientes: ps free top w sar
14
Administracin de Procesos
14
Comando ps
Muestra el estado de los procesos activos. Es usado frecuentemente para saber el PID de un proceso colgado $ ps -ft <terminal> $ ps -ef
$ ps -t pts/0 PID TTY 18667 pts/0 18668 pts/0 18744 pts/0 18804 pts/0 TIME CMD 00:00:00 login 00:00:00 bash 00:00:00 su 00:00:00 gunzip
15
Administracin de Procesos
15
Comando ps
Las opciones mas utilizadas son ps aux, donde:
a: Muestra tambin los procesos iniciados por los otros usuarios; x: Muestra tambin los procesos sin terminal de control alguna (esto se aplica a casi todos los servidores); u: Muestra, para cada proceso, el nombre del usuario que lo inici y la hora a la cual fue iniciado. # ps -aux
16
El campo PID, que contiene el identificador del proceso. El campo COMMAND contiene el nombre del comando ejecutado. El uso de la memoria por el proceso se indica en la columna %MEM. El uso del procesador por el proceso se indica en la columna %CPU. La columna TIME lista la cantidad total de tiempo de CPU usado. La columna RSS tamao del proceso en la memoria principal del sistema. La columna TTY nmero de terminal (consola) desde el que el proceso fue lanzado.
Administracin de Procesos
16
Comando free
Muestra la cantidad y uso de la memoria del sistema
# free total Mem: 78452 -/+ buffers/cache: Swap: 204468 used 72360 41620 1812 free shared 6092 64 36832 202656 buffers 17676 cached 13064
Se puede utilizar el argumento -b, -k, -m y -g para mostrar los valores en Bytes, KB, MB y GB.
17
Administracin de Procesos
17
18
Administracin de Procesos
18
Comando w
Muestra qu estn haciendo los usuarios en el sistema Adems muestra promedio de carga (uptime) PCPU : tiempo que se esta ejecutando un comando
#w
19
Administracin de Procesos
19
Comando top
# top
20
top: es la versin interactiva de ps, y tiene algunas utilidades interesantes aadidas. Si lo ejecutamos en una terminal y sin opciones, aparecer arriba informacin del sistema: usuarios, hora, informacin del tiempo de funcionamiento de la mquina, nmero de procesos, uso de CPU, uso de memoria, y uso del swap. Muestra cules son los procesos que actualmente estn consumiendo ms tiempo de CPU y memoria. Se puede modificar la informacin mostrada en forma interactiva. Opciones: P M h : Muestra la informacin ordenada por % CPU (valor por defecto) : Muestra la informacin ordenada por %MEM : Ayuda
Administracin de Procesos
20
Control de Procesos
Procesos en Background : &
Se ingresa el smbolo & despus del comando. # find / -name *tmp >resul &
21
Ejecutar un proceso en background significa que el proceso se ejecutara pero dejara libre al shell para continuar recibiendo otros comandos. Para esto utilizamos el smbolo & despus del comando. Tanto los procesos en segundo plano (background) como los que estn en primer plano, pueden ser detenidos (matados) utilizando el comando KILL. Este comando enva seales a los procesos, para indicarle al proceso que debe de terminar su ejecucin. Los procesos pueden manejar o responder las seales sin morir. Solo el dueo del proceso o el superusuario (root) puede matar un proceso. Para esto debemos conocer el PID del proceso que deseamos matar ( con el comando ps aux por ejemplo) y pasarle la seal 9 o 15 segn sea el caso.
Administracin de Procesos
21
Control de Procesos
Terminacin de Procesos: kill
Sirve para enviar seales a los procesos, para indicarle al proceso que debe de terminar su ejecucin. Los procesos pueden manejar o responder las seales sin morir. Solo el dueo del proceso o el superusuario (root) puede matar un proceso. # kill -seal PID Ejemplos: kill -15 1020 kill -9 1020
22
Procesos que continuan luego de un logout: nohup $ nohup sort bigfile>sortfile & Asignacion de prioridades: nice $ nice --incremento comando # nice --incremento comando
Administracin de Procesos
22
23
Ejecuta comandos en un tiempo especificado y opcionalmente una fecha. Los comandos pueden ser ledos de la entrada estndar o desde un archivo. Las tareas programadas se ejecutaran una sola vez de acuerdo al tiempo programado.
Administracin de Procesos
23
Hora H rs (1,2 digitos) H rs:m in (3,4 digitos) H rm in (3,4 digitos) N ow N oon M idnight N ext
Parm etros del com ando at Fecha M es da ao Dia de la sem ana Today Tom orrow
24
Administracin de Procesos
24
25
Administracin de Procesos
25
Comando crontab
Ejecuta en forma regular un comando en una fecha y tiempo determinado. Los comando que se van a ejecutar se guardan en un archivo. Este archivo consta de seis campos y puede contener varios comandos.
10
minutos 0-59
14
horas 0-23
4
da del mes 1-31
*
mes 1-12
*
da de la semana 0-6 0=Domingo
user01
usuario
/bin/script01
comando
Se ejecuta /bin/script01 todos los das 4 de cada mes, a las 14:10 horas, con los permisos del usuario user01.
26
Cron es una utilidad que permite ejecutar tareas en segundo plano a intervalos regulares utilizando el demonio CRON. Para esto hace uso de un archivo CRONTAB (CRON TABLE) que contiene las entradas que debern correr segn una hora y das determinados. Cada usuario tiene su propio crontab, y los comandos sern ejecutados con los permisos del usuario que es dueo del crontab.
Administracin de Procesos
26
Comando crontab
$ crontab -e .cronfile 0,15,30,45 * 0 3
minutos 0-59 horas 0-23
* *
mes 1-12
1-5 2-6
root root
df -v>/tmp/df_log /u/larry/dayly_backup
comando
$ crontab -l $ crontab -r
27
El formato utilizado para las entradas en el crontab es e siguiente: Minuto Hora Dia del Mes Mes Dia de la semana Tareas
Minuto = Minuto de la hora, entre 00 y 59. * indica todos los minutos. Hora = Hora del da en formato 24-horas, entre 00 a 23. * Indica todas las horas. Dia del mes = Entre 1 y 31, * indica todos los das. Mes = Mes del ao, entre 1 y 12. * indica todos los meses. Dia de la semana = 3 caracteres sun, mon, tue o numrico 0=sun, 1=mon, * indica todos los dias. Tarea = El comando que se desea ejecutar. Si se desea ejecutar una tarea por ejemplo cada 5 minutos: */5 * * * */script/a/ejecutar Lo mismo se puede utilizar si se desea cada por ejemplo 3 horas: * */3 * * * /script/a/ejecutar
Administracin de Procesos
27
Enlaces
Reunir Informacin del sistema: http://www.europe.redhat.com/documentation/rhl9/rhl-cg-es-9/chsysinfo.php3 Tareas automticas: http://www.europe.redhat.com/documentation/rhl9/rhl-cg-es-9/chautotasks.php3 Resumen de comandos: http://www.osmosislatina.com/linux/comandos.jsp Manejo de procesos: http://es.tldp.org/Tutoriales/TutorialLinux/TutorialLinux/linux_files/linu x3.html Man de Kill http://nixdoc.net/man-pages/Linux/man1/kill.1.html
28
Administracin de Procesos
28
Preguntas
1. Cul es el PID del proceso init? 2. Con que comando se muestra el uso de memoria del sistema? 3. Cul es la sentencia que ejecuta el script llamado script1 en background?
29
Administracin de Procesos
29
Respuestas
1. El PID 1. 2. El comando free. 3. ./script1 &.
30
Administracin de Procesos
30