Está en la página 1de 48

Planificación de procesos en

UNIX
Procesos (I)

• Cada programa que ejecuta el ordenador es un


proceso.
• El S.O. puede ejecutar varios procesos
asignando pequeñas fracciones de tiempo a
cada uno de forma que parece que todos
funcionan simultáneamente.
• Algunos procesos pueden estar “congelados”
de forma que se le dedica el tiempo a aquellos
procesos que realmente necesitan “tiempo”.

2
Procesos (II)

• Un proceso puede “crear” otro proceso.


• Relación padre-hijo
• Init es el proceso padre de todos.
• A cada proceso se le asigna un número
(PID) process ID
• Un “daemon” (demonio) es un proceso
residente que generalmente está a la
espera de realizar alguna función.
Ej: lpd es el “daemon” de impresión.

3
Procesos (III)

• Si un proceso “padre” muere, también


desaparecerán sus procesos hijos.
• Esto puede evitarse con
nohup comando &
• En este caso es el “abuelo” que hará las
veces de padre.

4
Procesos (IV)

• Es importante que una máquina UNIX


disponga de mucha memoria RAM, para
tratar de tener la mayor cantidad de
información en RAM, incluidos los
procesos en ejecución.
• UNIX permite memoria virtual.
Es útil pero puede ralentizar
considerablemente un proceso (xosview)

5
Estados posibles de procesos

• En ejecución (Running)
• Dormidos (Sleeping)
• En espera de Entrada/Salida (Waiting)
• Zombies (Z)

6
Planificación del procesos

• El S.O. planifica en función de:


La prioridad del proceso
Los requisitos de CPU en instantes anteriores
Si se pueden suspender un proceso por
procesos de espera.
Si se deben atender interrupciones de
periféricos (de disco, red local, puertos
serie,...)

7
Información de procesos (I)

• En UNIX System V,
ps –ef muestra información de todos los
procesos.
• En UNIX BSD,
ps ax

8
Información de procesos (II)

• Ejemplo de salida con ps


PID TTY STAT TIME COMMAND
2403 ? S 0:00 smbd
2424 ? S 0:00 in.telnetd
2425 p0 S 0:00 -bash
2471 p0 R 0:00 ps ax
2472 p0 S 0:00 more
63 ? S 0:00 /usr/sbin/rpc.por
• TIME: (Hora:Minutos consumidos de CPU)

9
Información de procesos (III)

• top muestra información de los procesos de


forma que se actualiza periódicamente.
Aparecen ordenados en función del % de consumo de
CPU.
2:14am up 2 days, 3:33, 1 user, load average: 0.07, 0.02, 0.00
54 processes: 53 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: 1.7% user, 9.6% system, 0.0% nice, 88.6% idle
Mem: 30824K av, 30112K used, 712K free, 20584K shrd, 12412K buff
Swap: 124956K av, 2496K used, 122460K free 3992K cached

PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
11009 root 18 0 716 716 556 R 0 11.4 2.3 0:00 top
1 root 0 0 108 68 48 S 0 0.0 0.2 0:02 init
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:01 kflushd
3 root -12 -12 0 0 0 SW< 0 0.0 0.0 0:03 kswapd
4 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 md_thread

10
Señales a procesos (I)

• Es un pequeño mensaje de un proceso a


otro.
• La señales en realidad son números. Del
0 al 30.
• Cada número representa un tipo de
señal, que suelen entender muchos
procesos.
• El receptor puede “ignorar” la señal o
atenderla.

11
Señales a procesos (II)

• kill envía una señal a un proceso.


• Todos los procesos cuando reciben la
señal 9 (SIGKILL) entienden que deben
“desaparecer” .
• Otra señal útil es la 1 (SIGHUP) pues
suele utilizarse en muchos “daemons”
para reactulizar sus tablas.
Ej: kill –1 389 ó kill –SIGHUP 389

12
Comodines

• Como ocurre en DOS, ? * permiten actuar de


comodines para uno o múltiple caracteres.
• UNIX amplia de forma que se puede especificar
un conjunto de caracteres válidos [abz] o
rangos [a-m] o excluir rangos [^a-m]
• ls [a-m]*
• cp [ab]* /home/usuario
• rm c[^0-4]*

13
Entrada estándar

• Es posible redireccionar la entrada de


teclado y salida por pantalla de muchos
programas a otro alternativo.
• comando < archivo_de_entrada
El contenido del fichero se dirige al comando

14
Salida estándar

• También podemos reencaminar la salida a un


fichero.
comando > fichero_salida
• Ej:
ls –la > salida
• Podemos añadir a un fichero
comando >> fichero_salida
ls b* >>salida
• O bien utilizar tanto entrada como salida
sort <fichero_desordeando > salida

15
Salida de errores

• Sh permite redirigir las salidas


correspondiente a errones a una salida
distinta de la salida estándar con 2>
• rm prueba 2> errores
Si esta orden provoca un error (por que el
fichero no exista o no haya permiso ) dicho
mensaje se enviará al fichero errores en
lugar de la pantalla.

16
Salidas

• /dev/null es una especie de papelera


• Actua como un fichero que siempre está
vacio.
• De forma que las salidas que no
deseamos que aparezcan por pantalla o
a un fichero se pueden enviar a dicho
archivo.
• Ej: rm datos >/dev/null 2>/dev/null

17
Encauzamiento o “pipes”

• Es posible que la salida estándar de un


programa se envíe directamente a la
entrada estándar de datos de otro
programa.
ls c* | more
echo “mi texto” | cat > fich3
echo “mi texto” > fich3

18
Mensajes

• Echo permite sacar mensajes por


pantalla
echo “esto es una prueba”
• Podemos combinarlo con un
redireccionamiento de la salida
Echo “otra prueba” > prueba2
En este caso se crea un fichero llamado
prueba2 con el texto otra prueba.
Las comillas “” permiten incluir espacios en el
texto.
19
Variables de la Shell

• Las shell poseen variables que se


pueden utilizar para:
Configuración personal de nuestro entorno de
trabajo.
Información.
Transferir pequeños parámetros entre un
proceso padre y otro hijo.

20
Variables del Shell (II)

• Set permite: Mostrar las variables y asignar


valores.
set VARIABLE=valor
• En realidad las variables contienen un texto de
forma que si necesitamos incluir espacios
podemos indicar el inicio y final con “”
• Para que un hijo herede una variable del padre,
previamente el padre debe exportarla.

21
Variables del Shell (III)

• Ej:
SET TERM=vt100
TERM=vt100 (también se puede escribir sin SET)
export TERM
• Podemos ver el contenido o asignar a otra.
echo $VARIABLE
VAR2 = ${TERM}”y otro contenido”
{} indican donde comienza y acaba el nombre de la
variable para no confundirlo con el resto del texto.

22
Variables del Shell (IV)

• unset variable elimina la variable.


• Algunas variables de la shell:
HOME indica el directorio “home” del usuario.
PATH directorios donde buscar un comando (el
directorio por defecto . debe estar para que pueda
encontrar un comando en el directorio actual
TERM indicamos que tipo terminal
USER nombre del usuario (login)
PS1 prompt del sistema, $, se puede cambiar

23
Variables del Shell (V)

• Algunas variables propias de la shell:


$? valor de salida del último comando.
$$ valor del número de identificación de proceso
$! valor del número de identificación de proceso del
último hijo que se invocó.
• Ej:
echo $$
23763 (obtenemos el PID de la shell)

24
Caracteres especiales en Shell (I)

• Barra invertida (\) : se toma el siguiente


carácter literalmente.
• Comillas sencillas (‘’) : lo que va entre comillas
sencillas se toma íntegramente.
• Comillas dobles (“”): Se interpretan $(variable)
la barra invertida y comillas sencillas.
• Punto y coma (;): Separa comandos.
• Comillas invertidas (``): Evalúa expresiones.

25
Caracteres especiales en Shell (II)

• Ej:
echo ; ls
echo \; ls
echo “;” ls
echo $HOME
echo “mi home es $HOME”
echo ‘mi home es $HOME’
echo abc
echo “ a b c”
echo `ls`
26
Ejecución de órdenes en modo
subordinado
• El UNIX permite ejecutar procesos de
forma que trabajen en un segundo
plano.
• comando & lanza el proceso en
“background”
sort < entrada > salida &
Nos muestra el PID del proceso creado
También nos avisará cuando acabe.

27
Control de trabajos

• Podemos “supender” un proceso


interactivo con Ctrl-Z.
• jobs nos permite ver los trabajos
Aparece una lista numerada de procesos.
• fg núm reactiva un proceso en
“foreground”
• bg num lleva el proceso a “background”

28
Ficheros de configuración de sh

• La shell puede ejecutar una serie de comandos


automáticamente al iniciar una sesión de
usuario (Equivalente al AUTOEXEC.BAT en DOS)
• /etc/profile definido por root se ejecutará
siempre (se definen variables como
TERM,...)
• .profile en nuestro HOME podemos editarlo y
modificarlo
• .bashrc modifica los valores de la shell bash

29
Búsqueda de archivos

• find directorio –opciones criterios


Opciones más usuales:
name: patrón de búsqueda del nombre
print: indica que se muestre el nombre
find / -name “pas*” –print
find .-name datos –print

30
Disco disponible

• UNIX almacena la información en


filesystems
• df muestra la información de cada fs.
(Sean locales o remotos)

Filesystem 1024-blocks Used Available Capacity Mounted on


/dev/hda1 208260 142698 54808 72% /

31
Disco utilizado

• Se puede saber el espacio total ocupado por un


conjunto de ficheros o subdirectorios.
du
9 ./default Desglosa por defecto
45 ./rc.d el tamaño de cada subdirectorio
12 ./ppp
10 ./slip
5 ./msgs al final indica el tamaño
401 . Total de todos incluidos

• La opción –s muestra el total sin desglosar los


subdirectorios.

32
Búsquedas de texto

• grep nos permite buscar cadenas de


texto en un fichero, un conjunto de
ficheros o la entrada estándar.
• Muestra todas las líneas donde aparece.
grep cadena fichero
ps -ef | grep sendmail
• Para buscar en un conjunto de ficheros
grep texto *.c

33
Contar elementos en ficheros

• wc hosts

24 126 862
Bytes
Palabras
Líneas

• wc –c sólo cuenta caracteres


• wc –l sólo cuenta líneas
• wc –w sólo cuenta palabras
34
Almacenamiento

Podemos reunir en un solo fichero varios


ficheros de forma que es más practico para
procesarlos (envío, copias de seguridad)
tar opciones lista
• Opciones usuales:
x : extrae
c : crear
v : ver los ficheros que se procesan
f : indica el nombre del fichero
• Se pueden controlar tamaños de bloque,
permisos,...
35
Almacenamiento (II)

Ej: ( es aconsejable acabar en .tar para recordar el


formato)
tar cvf fich.tar c* : crea el fichero tar
tar recuerda la ruta indicada de almacenamiento
(rel/abs)
tar cvf fich.tar . : almacenamiento relativo
tar cvf fich.tar /home/paco : almac. absoluto
tar xcf fich.tar : extrae fichero
tar tvf fich.tar : muestra el contenido

36
Compresión / Descompresión

• Podemos comprimir el contenido de un


fichero.
• tar no comprime la información.
• compress datos genera un fichero llamado
datos.Z (y elimina el original).
• compress es estándar en UNIX y nos
garantiza portabilidad a otros sistemas.
• Un fichero llamado nombre.tar.Z nos indica
que está comprimido con compress y que
además utilizó tar.
uncompress datos.Z :descomprime el fichero
37
Compresión/Descompresión (II)

• Existen otros formatos de compresión (gzip,


zip) que podemos encontrar en bastantes
sistemas UNIX
gzip datos : genera un fichero llamado datos.z
(y elimina el original).
gzip –d datos.z : descomprime el fichero
zip dt.zip datos : genera el fichero datos.zip
zip –k dt.zip datos : genera el fichero datos.zip
compatible con el fomato zip de MSDOS.
unzip dt.zip :descomprime el fichero zip
38
Tareas (I)

• Tipos: (el superusuario debe autorizar su uso)


Eventuales (at, batch)
Períódicas (cron)
• Cada usuario tiene su propia listas para cron, at y batch
• Aconsejable controlar las salidas hacia ficheros
• Si no se especifican ficheros de salida, cualquier mensaje
de salida estándar o de errores se enviará por correo
electrónico al usuario.
• batch es similar a at pero ejecutará los comandos
cuando la carga del sistema lo permita
(aproximadamente menor de 0.8)

39
Tareas (II)

Para at y batch:
• La secuencia de órdenes se introducen por la
entrada estándar
at expresión :podemos definir con expresión
que se ejecute a una hora y día
determinados.
atq : muestra nuestros procesos pendientes
atrm : podemos eliminar un proceso pendiente

40
Tareas (III) at

• Expresiones:
now + n (minutes| hour|days|weeks)
(now | today | tomorrow)
4 pm : define una hora
4 pm Jul 29 : define fecha y hora
• Ej: (el resultado la orden ls se enviará por mail)
$echo ls | at now + 1 minute
warning: commands will be executed using /bin/sh
job 1 at 1999-10-20 13:34
$atq
1 1999-10-20 13:34 a
$atrm 1

41
Tareas (IV) cron

crontab nos permite definir cada tarea


crond es el daemon de control de tareas.
crontab –e permite editar (por defecto
usa el vi)
1 * * * * /etc/cron.hourly
02 4 * * * /etc/cron.daily
22 4 * * 0 /etc/cron.weekly
42 4 1 * * /etc/cron.monthly
Min hora dia mes dia-semana
Podemos especificar numeros, rangos - ,
Ej: ejecutar a las 1 y 3 de la madrugada: 0 1,3 * * *
ejecutar a las 1,2,3, y 7 de la madrugada: 0 1-3,7 * * *

42
Redes de área Local

• Transmisión de información:
Intercambio de datos. (Sistemas de ficheros,
correo electrónico, servidores de bases de
datos,ftp)
Ejecución remota (telnet, ssh, cálculo)
Aplicaciones (WWW)

43
Ethernet

• Define el nivel físico


Cableado (Cable coaxial,UTP) (lím.distancia)
Velocidad de transmisión: 10/100 Mbit/s
• Formato de los paquetes:
IEEE 802.3
Número ethernet: Ej: 00:60:50:23:25:5B (6
bytes expresados en hexadecimal)
Permite soportar múltiples protocolos

44
Verificaciones para
comprobar la red:

ping
Tablas de enrutamiento:
route
traceroute
tcpdump
/proc/net

45
Linux como servidor NFS

• NFS Servidor de ficheros: (ampliamente


utilizado entre máquinas UNIX)
/etc/exports
mountd
nfsd

46
Seguridad en Linux

- Limitación de acceso:
/etc/hosts.allow
/etc/hosts.deny
- Limitación en ftp:
/etc/ftpusers
/etc/ftpaccess
/etc/ftphosts
Acceso remoto de impresoras (lpd)
/etc/hosts.lpd
47
X-Windows

• Similar a windows
• Concepto de servidor
• Editores: xemacs
• Graficos: xmgrace, gnuplot, ..

48

También podría gustarte