Está en la página 1de 35

Administracin de Procesos

Unidad 12

Sistemas Operativos II

Introduccin
Un punto importante a tomar en cuenta cuando se trabaja
con un sistema operativo conocer la cantidad de recursos
que se estn utilizando.
Estos recursos pueden ser por ejemplo capacidad de
procesamiento o memoria, cuyo consumo afecta el
rendimiento del servidor.
Este consumo de recursos es realizado por todos procesos
que se estn ejecutando en el servidor.
En esta unidad describiremos la forma como Linux trata los
procesos y como poder hacer para gestionar y monitorear
el uso de los recursos de procesamiento y memoria.

Sistemas Operativos II

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.

Sistemas Operativos II

Agenda
Definicin de Proceso.
Genealoga de Procesos.
Procesos Demonios.
Procesos Hurfanos y Difuntos.
Comando bg, fg y jobs
Herramientas de Monitoreo: ps, free, top,
w, sar
Control de procesos.
Automatizacin de tareas: at y crontab.
Sistemas Operativos II

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, a stos se les llama Proceso en Foreground.
En cambio los procesos asncronos se pueden
ejecutar en simultaneo con otros procesos, stos son
llamados Proceso en Background.
Sistemas Operativos II

Procesos (cont.)
Un PID o process id, es un nmero entero que especifica un proceso o un grupo
de procesos.
Todos los procesos ejecutndose pueden ser terminados utilizando el mandato
kill o bien el mandato killall, excepto por el proceso con PID 1, el cual
corresponde siempre a /sbin/init.
Un Job ID o identificador de trabajo, identifica un trabajo o grupo de trabajos
que se ejecutan en segundo plano (background).
Los trabajos se administran con los comandos bg, fg y jobs.
Los procesos se terminan normalmente con SIGTERM (nmero de seal 15) o
con SIGKILL (nmero de seal 9), utilizando el mandato kill o el mandato
killall.

Sistemas Operativos II

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

bash
PID
200

Sistemas Operativos II

PPID
1

Arranque del sistema


Gestor de arranque

Kernel

GRUB

Linux

login

init

mingetty

Padre de todos
los procesos

xdm
Sistema X Windows

BIOS

bash

Sistemas Operativos II

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

Proceso
Padre

bash

Proceso
Padre

mingetty

Proceso
Hijo

cat

Proceso
Hijo

Sistemas Operativos II

Genealoga de Procesos
En Linux los procesos se crean mediante una llamada (call)
al sistema, la peticin crea otro proceso: fork.
HIJO
PPID
date
1 PPID
PPID
PID1 PPID
1
300
200

PPID
exec(date) date
1 PPID
PPID
PID1 PPID
1
300
200

Comando ingresado:
# date
PPID
bash
1 PPID
PPID
PID1 PPID
1
200
1

fork( )

PADRE
PPID
bash
1 PPID
PPID
PID1 PPID
1
200
1

wait(hijo)

Sleep
Sistemas Operativos II

PPID
bash
1 PPID
PPID
PID1 PPID
1
200
1
Sleep

exit( )

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 (PID X)
: Tareas automtica
lpd (PID Y)
: Demonio de Impresin lpr

Sistemas Operativos II

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, las cuales se puede
invocar manualmente.
# init <nivel_ejecucin>
Ejemplo:
# init 0
# init 1
Sistemas Operativos II

Procesos Hurfanos y Difuntos


Proceso Hurfano:
Es un proceso que permanece activo despus que el
proceso padre ha terminado.
Son siempre adoptados por el proceso init (PID 1).
Proceso Difunto (zombie):
Proceso que ha terminado pero no ha sido removido de la
tabla de procesos, porque su padre ya no est esperando
(wait) por l.
Al morir el padre, stos procesos deben morir; si an
continan vivos son adoptados por el proceso init.
Sistemas Operativos II

Gestin de trabajos : jobs, fg y bg


El comando bg se utiliza para mover un trabajo a segundo plano. El
usuario puede ejecutar un proceso en segundo plano aadiendo un
smbolo & al final del comando.
# bg 2
El comando fg se utiliza para colocar un trabajo en primer plano.
# fg 2
El comando jobs se utiliza para verificar la lista de trabajos ejecutndose
o culminados segn el momento en que se ejecuta el comando..
# jobs
Sistemas Operativos II

Herramientas de monitoreo de procesos


Los programas utilizados en el monitoreo del
sistema son los siguientes:
ps
free
top
w
sar

Sistemas Operativos II

Comando ps
Muestra el estado de los procesos activos.
Es usado frecuentemente para saber el PID de un
proceso colgado
$ ps -t <terminal>
$ ps -ef
# ps -t tty1

PID
18667
18668
18744
18804

TTY
tty1
tty1
tty1
tty1

TIME
00:00:00
00:00:00
00:00:00
00:00:00

Sistemas Operativos II

CMD
login
bash
su
gunzip

Comando ps
Las opciones ms 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

Nota : RSS -> Resident set size, the non-swapped physical memory that a task has used (in kiloBytes).
VSZ -> Virtual memory usage of entire process. = vm_lib + vm_exe + vm_data + vm_stack

Sistemas Operativos II

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.

Sistemas Operativos II

Monitor del Sistema Gnome

Sistemas Operativos II

Comando w
Muestra qu estn haciendo los usuarios en el
sistema.
Adems muestra promedio de carga (uptime)
PCPU : Tiempo usado por el proceso actual
JCPU : Tiempo usado por todos los procesos en el
terminal
#w

Sistemas Operativos II

Comando top
# top

Sistemas Operativos II

Comando sar (System Activity Reporter)


Permite monitorear la actividad del sistema. Depende del paquete sysstat.
Para mostrar un informe bsico que muestre el uso de CPU y el porcentaje
de tiempo gastado esperando E/S, ejecutamos sar ningn argumento
# sar

Nota : Si %idle (desocupado) est cerca de cero, tu CPU est sobrecargada. Si el valor %iowait (espera
por e/s) es grande, tus discos estn sobrecargados.
Sistemas Operativos II

Comando sar (cont.)


Para obtener estadsticas de red, utilizamos sar -n DEV. Este comando
genera un informe que muestra estadsticas con los datos transmitidos y
recibidos para cada interfaz de red.

Informes en Tiempo Real


Para ver el informe bsico cada segundo durante los prximos 10 segundos,
usaramos sar 1 10

Sistemas Operativos II

Control de Procesos
Procesos en Background : &
Se ingresa el smbolo & despus del comando.
# find / -name tmp > result &
Terminacin de Procesos: kill
# kill -<seal> PID
Ejemplos:
- kill -15 1020
// terminacin condicional
- kill -9 1020
// terminacin incondicional

Sistemas Operativos II

Automatizacin de tareas: comando at


Ejecuta un comando una sola vez en un tiempo
determinado.

at <hora> [fecha] [incremento]


hora
: hhmm (14:00), now, midnight
fecha
: mes dia [ao] (Feb 14), monday, today,
tomorrow
incremento : +n mins, hrs, days.

Ej. # at now + 2 min <Enter>


at> sort /etc/passwd > /tmp/arch.tmp
<ctrl> + d
Sistemas Operativos II

Parmetros del comando at


H
o
ra

P
a
r
m
e
tro
sd
e
lc
o
m
a
n
d
oa
t
F
e
c
h
a

In
c
re
m
e
n
to
s

H
rs(1
,2d
ig
ito
s
)

M
e
sd
aa

+
nm
in
s

H
rs
:m
in(3
,4d
ig
ito
s
)

D
iad
elas
e
m
a
n
a

+
nh
rs

H
rm
in(3
,4d
ig
ito
s
)

T
o
d
a
y

+
nd
a
y
s

N
o
w

T
o
m
o
rro
w

+
nw
e
e
k
s

N
o
o
n

+
nm
o
n
th
s

M
id
n
ig
h
t

+
ny
e
a
rs

N
e
x
t

Sistemas Operativos II

Parmetros del comando at


Existen otros comandos para administrar los
trabajos planificados con el comando at.
Comando atq
Lista las tareas ubicadas en la cola del
comando at.
Comando atrm <Job Id>
Cancela un proceso ubicado en la cola del
comando at.

Sistemas Operativos II

Comando crontab
Ejecuta en forma regular un comando en una fecha
y tiempo determinado.
Los comandos que se van a ejecutar se guardan en
un archivo.
Este archivo consta de seis campos y puede
contener varios comandos.
10

14

minutos
0-59

horas
0-23

da del
mes
1-31

mes
1-12

user01 /bin/script01

da de la
usuario
semana
0-7
0 y 7 = Domingo

comando

El usuario user01 ejecutar /bin/script01 todos los das 4 de cada mes a las
02:10 pm
Sistemas Operativos II

Campos crontab
CAMPO

DESCRIPCION

Minuto

Controla el minuto de la hora en que el comando ser ejecutado, este valor


debe de estar entre 0 y 59.

Hora

Controla la hora en que el comando ser ejecutado, se especifica en un


formato de 24 horas, los valores deben estar entre 0 y 23, 0 es medianoche.

Da del Mes

Da del mes en que se quiere ejecutar el comando. Por ejemplo se indicara 20,
para ejecutar el comando el da 20 del mes.

Mes

Mes en que el comando se ejecutar, puede ser indicado numricamente (112), o por el nombre del mes en ingls, solo las tres primeras letras.

Da de la
semana

Da en la semana en que se ejecutar el comando, puede ser numrico (0-7) o


por el nombre del da en ingls, solo las tres primeras letras. (0 y 7 = domingo)

Usuario

Usuario que ejecuta el comando.

Comando

Comando, script o programa que se desea ejecutar. Este campo puede


contener mltiples palabras y espacios.
Sistemas Operativos II

Comando crontab
$ crontab -e
0,15,30,45 *
0
3
minutos
0-59

horas
0-23

$ crontab -l
$ crontab -d

Edita el archivo crontab


*
*
da del
mes
1-31

*
*

1-5
2-6
mes
1-12

root
root

da de la usuario
semana
0-6
0=Domingo

/bin/df v > /tmp/df_log


/u/larry/dayly_backup
comando

Lista las tareas


Borra el crontab del usuario

Sistemas Operativos II

Control del acceso a CRON


Cron permite controlar que usuarios pueden o no pueden usar los servicios de
cron. Esto se logra de una manera muy sencilla a travs de los siguientes
archivos:
/etc/cron.allow
/etc/cron.deny
Para impedir que un usuario utilice cron, basta con agregar su nombre de
usuario al archivo /etc/cron.deny, para permitirle su uso entonces sera agregar
su nombre de usuario en /etc/cron.allow

Si por alguna razn se desea negar el uso de cron a todos los usuarios,
entonces se puede escribir la palabra ALL al inicio de cron.deny y con eso
bastara.

Sistemas Operativos II

Preguntas
1. Cul es el PID del proceso init?
1. Con que comando se muestra el uso de memoria del
sistema?
1. Qu comando nos muestra la cola de tareas programadas
con AT?
1. Cul es la sentencia que ejecuta el script llamado script1
en background?
Sistemas Operativos II

Respuestas
1.
2.
3.
4.

El PID 1.
El comando free.
atq
./script1 &.

Sistemas Operativos II

Bibliografa
Martin, Michel (2001) De windows a linux. Barcelona:
Alfaomega (005.43L/M26)
Schenk, Thomas (2001) Administracin de red Hat
Linux al descubierto. Madrid: Prentice Hall
(005.43L/S3)
Baig Vias, Roger (2006). Sistema operativo
GNU/Linux bsico. Madrid: s.n. (005.43L/B16)

Sistemas Operativos II

GRACIAS POR SU ATENCIN . . . !!!

Sistemas Operativos II