Está en la página 1de 101

Curso Linux: Administracin de Sistema y Servicios

IRONTEC - http://www.irontec.com

CURSO LINUX: Administracin de Sistema y Servicios

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Antes de nada...

GNU GPL Linux Software Libre Kernel GNU/Linux Distribucin Linux Debian (K)Ubuntu KDE Gnome Emule
2
Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Paquete

Curso Linux: Administracin de Sistema y Servicios

Nuestra distro

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Debian

Qu es Debian?

Sistema operativo libre desarrollado por la comunidad. Conjunto de programas bsicos y utilidades. Utiliza el ncleo Linux (el corazn del sistema operativo). Herramientas bsicas Proyecto GNU -> GNU/Linux. Versin estable de Debian. Probada y testeada a conciencia. ptima para un servidor en produccin. Versiones de desarrollo y experimentacin.
Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Debian Sarge

Debian Testing e Inestable

Curso Linux: Administracin de Sistema y Servicios

Debian

Contrato Social de Debian:

Contrato social con la comunidad de software libre:


1) Debian permanecer 100% libre. 2) Contribuiremos a la comunidad de software libre. 3) No ocultaremos los problemas. 4) Nuestra prioridad son nuestros usuarios y el software libre. 5) Rama de paquetes contrib y non-free.

http://www.debian.org/social_contract

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Debian

Instalacin para todas las arquitecturas:


Debian soporta mltiples arquitecturas. http://www.us.debian.org/releases/stable/installmanual http://www.us.debian.org/releases/stable/i386

Instalacin para i386:

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Instalacin de Debian Sarge

Instalacin Debian Sarge

Desde CD Net-Install:

http://www.us.debian.org/CD/netinst/

Durante la instalacin:
Kernel 2.6 (opcin linux26). Red por DHCP. Repositorios externos por http. Particionamiento (dependiendo del disco duro):

/ -> Ext3 4GB /var -> Ext3 6GB /home -> Ext3 40GB swap -> 1GB

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Introduccin a GNU/Linux

Introduccin a GNU/Linux

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Introduccin a GNU/Linux

GNU/Linux

Herramientas GNU + Linux (ncleo). Compatible con UNIX (GNU's Not UNIX). Sistema multiusuario y multitarea.

Bash

Herramienta GNU. Shell, intrprete de comandos.

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Introduccin a GNU/Linux

Shells

Existen muchas shells: sh,csh,ksh,bash... Entorno de trabajo:


Case sensitive: sensible a maysculas (ECHO != echo). Sintxis: comando arg1 arg2... argn Si un programa no est en el PATH: ./programa Prompt:

$: usuario normal #: usuario administrador (root)

10

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Introduccin a GNU/Linux

Comandos

Manejo del sistema de ficheros: ls,cd,cp,mv,rm, mkdir,rmdir... Informacin sobre ficheros: cat,more,less,file... Busquedas: find,whereis,locate... Filtros: grep,sed,cut,tr... Usuarios y grupos: id,whoami,su,sudo... Permisos: chmod,chown,chgrp... Otros:date,tar,gzip,echo...

11

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Introduccin a GNU/Linux

Tuberas

Un proceso en un sistema UNIX-like tiene inicialmente abiertos 3 canales:


0: STDIN o entrada estndar 1: STDOUT o salida estndar 2: STDERR o salida de error

Imaginmonos una refinera:

Metes crudo por 0 (STDIN), consigues gasolina por 1 (STDOUT) y bastantes residuos por el desage 2 (STDERR).

12

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Introduccin a GNU/Linux

Tuberas

Redirigiendo la salida de un comando:

> : redirigir STDOUT a un fichero:


ls>listado.txt

>>: redirigir STDOUT al final de un fichero (aadir):


ls>>listados.txt

2>: redirigir STDERR a un fichero:


ls2>errores.txt

2>>: redirigir STDERR al final de un fichero:


ls2>>errores.txt

2>&1: redirigir STDOUT y STDERR a un fichero:


ls>salida2>&1

13

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Introduccin a GNU/Linux

Tuberas

Redirigiendo la entrada de un comando:

<: redirigir el contenido de un fichero a STDIN:


traA<fichero.txt

| : es posible recoger la salida de un desage y conducirlo a la entrada de otro comando.


catfichero.txt|traA echo"SololaXdeestetexto"|cutd""f3

14

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Programacin Bsica en Shell

Programacin Bsica en Shell (Bash)

15

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Script = Guin Tareas repetitivas se pueden agrupar en un guin y ejecutarse automticamente (Batch Processing).
Es sencillo ejecutar 4 comandos para crear un buzn de correo. No lo es tanto para crear 20.000 buzones. Es sencillo hacer un bucle que se repita 20.000 veces ;-)

16

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Nuestro primer shell script

Usamos un editor y creamos el fichero hola.sh:


#!/bin/sh echohola

Con #! en la primera lnea indicamos quin debera interpretar el resto de comandos (/bin/sh). Posteriormente escribimos los comandos separados por saltos de lnea.

17

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Variables

Una variable tiene un nombre y un valor, y sirve para dotar de dinamismo a nuestros scripts:
FECHA=15/07/2004 echoHoyes$FECHA

FECHA es el nombre de la variable. $FECHA es su valor.

Para asignar un valor, se utiliza =. SIN ESPACIOS!!!

18

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Variables de entorno

Al arrancar una shell, ya hay muchas variables definidas, son las variables de entorno.

Podemos ver su valor con el comando env.

mbito de una variable:


Si se define una variable en una shell, slo tiene valor en esa shell, a no ser que se exporte a los programas hijo. exportUSUARIO=joaquin Si desde esa shell lanzamos un script u otro programa, la variable USUARIO contendr joaquin.

19

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Variables: interactividad

Es posible leer del usuario el valor de una variable, dotando a nuestros scripts de interactividad. cathola.sh
#!/bin/sh echoDimetunombre: readNOMBRE echoHola$NOMBRE,encantadodeconocerte

20

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Variables: argumentos

Es posible pasar los parmetros o argumentos que queramos y utilizarlos dentro del script. catnombre.sh
#!/bin/sh echoNombre:$1 echoPrimerApellido:$2 echoSegundoApellido:$3

./nombre.shJuanLpezMartnez ./nombre.shMariaDoloresPradera Snchez

21

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Variables: argumentos

$1, $2, $3... ${10}, ${11}: argumentos $0 es el propio script.


basename$0: nombre del script. dirname$0: ruta al nombre del script.

shift: rota los argumentos hacia la izquierda


$1 ahora vale lo que vala $2, $2 lo que vala $3, etc. $0 no cambia.

22

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Variables: argumentos especiales


$#: nmero de argumentos que nos han pasado. $*: todos los argumentos. $* = $1 $2 $3... $@: todos los argumentos. $@ = $1 $2 $3... $_: comando anteriormente ejecutado. $$: PID del propio proceso shell.

23

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Variables: sustitucin de comandos

Es posible almacenar en una variable el resultado de la ejecucin de un comando. Dos sintaxis:

Acentos graves: compatibilidad


LISTADO=`ls`

Con $(): anidable


LISTADO=$(ls) LISTADO=$(ls$(catdirectorios.txt))

24

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

expr: Permite realizar operaciones aritmticas.

Sintaxis: expr ARG1 OP ARG2


$SUMA=`expr7+5` $echo$SUMA 12 $expr7\>5 $expr\(7+5\)\*2 (ojoespacios!)

(ojoescaparoperadores!)

25

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

Condiciones: test []
test$NOMBRE==Juan (==, !=, >, <, >=, <=) test$DINEROeq1000 (-eq, -ne, -gt, -lt, -ge, -le) testf/etc/passwd (-f, -d, -l, -r, -w, -x)

Modifican el valor de $?
cero = verdadero no cero = falso

(AL REVS QUE EN C!!)

26

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

if: alternativa simple. Sintaxis:


ifcondicin_1 then comandos elifcondicin_2 then comandos else comandos fi

27

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

if. Ejemplo:
iftest$NOMBRE==Juan then echoHolaJuanin,qutal? eliftest$NOMBRE==Pedro then echoPedreteee,cuntotiempo! else echoNoteconozco fi

28

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

case: cmodo para evitar alternativas anidadas. Sintaxis:


case$VARIABLEin VALOR1)comandos ;; VALOR2)comandos ;; *)comandos; esac

29

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

case. Ejemplo:
case$NOMBREin Juan)echoHolaJuanin,qutal? ;; Pedro)Pedreteee,cuntotiempo! ;; *)echonoteconozco; esac

30

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

while. Ejecucin de 0 a N veces. Sintaxis:


whilecondicin do comandos done

31

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

while. Ejemplo:
N=1 while[$Nlt100] do echoRepitoestafrase,yavoy$Nveces N=$(expr$N+1) sleep1#Esperamos1segundo done

32

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

until. Ejecucin de 0 a N veces. Idntico a while con la condicin negada. Sintaxis:


untilcomando do comandos done

33

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

until. Ejecucin de 0 a N veces. Idntico a while con la condicin negada. Sintaxis:


N=1 until[$Nge100] do echoRepitoestafrase,yavoy$Nveces N=$(expr$N+1) done

34

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

for: ejecucin repetitiva asignando a una variable de control valores de una lista. Sintaxis:
forVARIABLEinLISTA do comandos done

35

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

for. Ejemplo:
forNinSopaCarnePandeajo do echoHoycomemos$N done

36

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

for: la LISTA define la separacin de cada elemento por el valor de la variable IFS (que por defecto vale \t\n). Ejemplo:
IFS=: echoDirectoriosenelPATH... forDIRin$PATH do echo$DIR done

37

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

for. Ejemplos numricos:


forNin12345678910 do echoNahoravale$N done forNin$(seq10) do echoNahoravale$N done

38

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

select: muestra las opciones especificadas en LISTA y asigna a VARIABLE la opcin escogida. Sintaxis:
selectVARIABLEinLISTA do comandos done

39

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Control del flujo de ejecucin

select: Ejemplo:
selectOPCIONinDonerKebabPizza do case$OPCIONin DonerKebab)echoMmmm... break;; Pizza)echoSlurppp! break;; *)echoNosqueseso esac done

IMPORTANTE: sin el break el select seguira ejecutndose indefinidamente.

40

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

function

Podemos modularizar los scripts agrupando tareas en funciones. Es necesario que una funcin est definida ANTES de que sea llamada. Dentro de una funcin, $1, $2, $3, etc. sern los parmetros pasados a la funcin, no al script en s.

41

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

function. Ejemplo:
#!/bin/sh functionsuma { echo$(expr$1+$2) } suma46 suma3234

42

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

source, .

Con source o con . podemos incluir el cdigo de otro script en el nuestro:


#!/bin/sh sourcefunciones.sh#ahsedefinesuma suma13 suma1212312

43

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Es posible mejorar el aspecto de nuestros mens y opciones ms all de read y select usando herramientas como dialog, whiptail, Xdialog, gdialog o kdialog. Son bastante similares y sencillas de utilizar. Son capaces de generar cajas de texto, dilogos de peticin de texto o contraseas, mens, barras de progreso, etc.

44

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

dialog

dialogos desde shell scripts en ncurses. MsgBox:


dialogtitle"Alerta"backtitle"CursillodeBash Shell"msgbox"Esteesunmensajecondialog"850

45

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

dialog

YesNo:
dialogtitle"Pregunta"backtitle"CursodeBash Shell"yesno"\nEstasaprendiendoalgo?"760 RESPUESTA=$? case$RESPUESTAin 0)echo"Bien!";; 1)echo"Mal!";; 255)echo"Salir[ESC]";; esac

46

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

dialog

InputBox y PasswordBox:
dialogtitle"Creaciondeusuarios"inputbox"Nombre deusuario"002>/tmp/dialog.$$ USUARIO=$(cat/tmp/dialog.$$) dialogtitle"Creaciondeusuarios"passwordbox "Clave"002>/tmp/dialog.$$ CONTRASENYA=$(cat/tmp/dialog.$$) rm/tmp/dialog.$$

47

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

dialog

Menu:
dialogtitle"Creaciondeusuarios"menu"Grupos"00 30root100users5audio2> /tmp/dialog.$$ GRUPOS=$(cat/tmp/dialog.$$) rm/tmp/dialog.$$

48

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

dialog

Barras de progreso (gauge):


{ echo10;sleep1 echo40;sleep2 echo95;sleep1 echo100 }|dialogtitle"Creaciondeusuarios"gauge Creando...000

49

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Shell Scripts

Todo lo anterior se puede hacer con el resto, con cambios mnimos en la sintaxis:

whiptail: ncurses, aspecto mejorado Xdialog: widgets X simples gdialog: GNOME kdialog: KDE

50

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Tareas peridicas

cron

El demonio cron permite la ejecucin programada de procesos, scripts o simples comandos. Cron mira cada minuto si tiene que lanzar algn proceso y en caso afirmativo lo lanza. No se puede planificar una ejecucin de forma ms precisa. Cada usuario tiene su tabla de planificacin (crontab) aunque tambin existen una tabla de planificacin global del sistema (/etc/crontab) y una serie de directorios especiales.

51

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Tareas peridicas

cron

Ficheros de informacin de cron. Los ficheros de cron tienen una sintaxis especial y son los siguientes:
/etc/crontab: Fichero de cron del sistema. /etc/cron.d/: Directorio para que paquetes puedan meter ficheros de cron. fichero de cron de cada usuario:

No se ven (/var/spool/cron...). No es necesario indicar el usuario que sobre el que se ejecutar, ya que pertenecen a un usuario concreto. Se edita con crontabey se muestra con crontabl.

52

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Tareas peridicas

cron

La sintaxis tpica de los ficheros de cron consiste en 6 campos:


*****[user]comandoparametros minuto:059.Nmero,rango,intervaloolista(separada porcomas). hora:023. dadelmes:131. mes:112onombres. dadelasemana:07onombres. usuario:sloenficheroscomentadosanteriormente. comando:elrestodelalneaeselcomandoaejecutar.

Nota: Tambin puede haber lneas al principio con declaracin de variables y comentarios (#). Ms info (man5crontab).
Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

53

Curso Linux: Administracin de Sistema y Servicios

Tareas peridicas

cron

Ejemplo de cron de un usuario (root):


PATH=$PATH:/usr/bin:/usr/local/bin #losviernescada2horas... **/2**5cd/root/scripts;./generaEstadisticas.sh #cadadaporlanoche 203 ***/root/scripts/backupDiario.sh #rotacindebackupscadames 011**cd/root/scripts;./rotaBackups.sh

54

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Tareas peridicas

cron

Creacin o edicin del fichero de cron del usuario actual:


$EDITOR=vi $exportEDITOR $crontabe (seedita...) :wq(seguardaysesale)

Mostrar el contenido del cron de un usuario:


$crontab[uuser]l

55

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Tareas peridicas

cron

Directorios especiales:
/etc/cron.daily/ /etc/cron.hourly/ /etc/cron.monthly/ /etc/cron.weekly/

Los ficheros ejecutables que metamos en esos directorios se ejecutarn en su momento por el usuario root. NO DEBEN SER FICHEROS DE CRON, sino scripts o programas.

56

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Servicios y Niveles de Ejecucin

Servicios y Niveles de Ejecucin

57

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Proceso de arranque

La BIOS busca un dispositivo de inicio (disco duro, CDROM,..) y pasa el control al MBR (512 bytes). Se carga el gestor de arranque (instalado en MBR). Se carga el kernel. Se monta el sistema de ficheros raiz (/). Se inicia el init (el abuelo de todos los procesos). Se lee el archivo /etc/inittab. Se ejecutan los scripts indicados por el nivel de ejecucin de arranque.

58

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Gestores de arranque

LiLo

LILO (Linux Loader) es un gestor de arranque capaz de arrancar diferentes sistemas operativos en diferentes particiones y discos duros. Normalmente se instala en el MBR (master boot record) del disco duro principal. El archivo de configuracin en Debian GNU/Linux es: /etc/lilo.conf Siempre que se realice un cambio en la configuracin hay que ejecutar 'lilo' para que se escriba el sector de arranque de nuevo.

59

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Gestores de arranque

LiLo

Datos de interes del archivo lilo.conf:


boot=/dev/hda#Dondeseinstalaellilo install=menu #Tipodeinstalacin(interfaz) delay=20 #Tiempodeespera default=Linux2.6.8 #Labeldearranquepordefecto image=/boot/bzImage2.6.8.1 #Imagendelkernel label=Linux2.6.8 #Etiqueta readonly #vga=0x317#(1024x768) append="video=i810fb:xres:1024,yres:768,bpp:8, hsync1:30,hsync2:55,vsync1:50,vsync2:85" other=/dev/hda2 label=Windows #OtrosS.O.

60

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Gestores de arranque

LiLo

LILO con men grfico:


install=/boot/bootbmp.b bitmap=/boot/debianbootscreenwoody.bmp#debeexistir bmpcolors=1,,0,2,,0 bmptable=120p,173p,1,15,17 bmptimer=254p,432p,1,0,0

61

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Gestores de arranque

Grub

Grub (Grand Unified Bootloader) es un gestor de arranque capaz de arrancar diferentes sistemas operativos en diferentes particiones y discos duros. Normalmente se instala en el MBR (master boot record) del disco duro principal. El archivo de configuracin en Debian GNU/Linux es: /boot/grub/menu.lst No es necesario ejecutar ningn comando para que se tengan en cuenta los cambios realizados.

62

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Gestores de arranque

Grub

Grub no es capaz de distinguir entre dispositivos IDE, SCSI u otros. Sintaxis:

Dispositivos
(dispositivo[particion][,letra_particion])
(hd0) (fd0) (hd0,1) #discomaestroIDEprimario #disquetera #particin2delmaestroIDE0

Ficheros
Es necesario indicar la ruta completa
(hd0,0)/boot/grub/menu.lst

63

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Gestores de arranque

Grub

Datos de interes del archivo menu.lst:


default0 timeout3 titleUbuntu,kernel2.6.1210386 root(hd0,1) kernel/boot/vmlinuz2.6.1210386 root=/dev/hda2roquietsplash initrd/boot/initrd.img2.6.1210386 savedefault boot titleMicrosoftWindows root(hd0,2) savedefault makeactive chainloader+1

64

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Niveles de Ejecucin

En los sistemas Unix hay 7 (0...6) niveles de ejecucin


nivel 0: estado de parada (halt) nivel 1: monousuario nivel 2, 3 y 5: multiusuario nivel 4: no tiene un uso especfico nivel 6: estado de reinicio (reboot)

65

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Niveles de Ejecucin

Init

Es el primer proceso que se crea (PID=1). Se configura mediante /etc/inittab.

Sintaxis
id:nivel:accion:proceso

id: nombre de la lnea nivel: nivel o niveles en los que la lnea debe procesarse accion
wait(espera),once(solo1vez),respawn(rearranca unavezfinalizado),off(ignoralalnea)

proceso: path del proceso a ejecutar

66

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Niveles de Ejecucin

Init

Valores tpicos del archivo /etc/inittab:


id:2:initdefault l0:0:wait:/etc/init.d/rc0 l1:1:wait:/etc/init.d/rc1 l2:2:wait:/etc/init.d/rc2 l3:3:wait:/etc/init.d/rc3 1:2345:respawn:/sbin/getty38400tty1 2:23:respawn:/sbin/getty38400tty2 z6:6:respawn:/sbin/sulogin #CTRLALTDEL! ca:12345:ctrlaltdel:/sbin/shutdownt1arnow

67

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Arranque del sistema

Cuando la mquina se inicia en un nivel de ejecucin N se ejecutan todos los scripts que empiecen por 'S' o 'K' contenidos en /etc/rcN.d/ con las siguientes particularidades. Si el nombre del script comienza por S se le pasa como parmetro 'start'. Si el nombre del script comienza por K se le pasa como parmetro 'stop'. Normalmente todos estos ficheros de /etc/rcN.d son enlaces a scripts localizados en /etc/init.d/

68

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Configurando servicios en arranque y parada

updaterc.d

Herramienta para configurar automgicamente los enlaces a los scripts de init tipo System V que estn en /etc/rcN.d/[S|K]NNnombre y que apuntan a los scripts /etc/init.d/nombre. Ejemplos
#updaterc.d3waredefaults #updaterc.dscriptstart9012345.stop2006.

69

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Gestin de Paquetes en GNU/Linux

Gestin de Paquetes

70

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Paquetes .deb

DPKG, Sistema de gestin de paquetes de Debian

Permite la instalacin, borrado y mantenimiento de .debs


dpkgipaquete.deb: instala un paquete. dpkgr[purge]paquete: elimina un paquete dpkgLpaquete: muestra el contenido completo de un paquete. dpkgSfile: busca paquetes que contengan el fichero. dpkgl: muestra la lista completa de paquetes instalados en el sistema. dpkgspaquete: muestra informacin del estado de un paquete.

71

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Paquetes .deb

APT, front-end avanzado para DPKG

APT resuelve dependencias. Al instalar un paquete puede que ste dependa de otro u otros para su funcionamiento. APT detecta esta dependencia e instala los paquetes necesarios. Funcionamiento:
Se crea una base de datos local con la informacin de los paquetes instalables. Para crear esta base de datos hace falta un fichero con las fuentes (/etc/apt/sources.list) de donde bajarse la informacin. Esta base de datos local hay que actualizarla peridicamente (aptgetupdate)

72

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Paquetes .deb

APT, front-end avanzado para DPKG

Funcionamiento (cont.):
Cuando se solicita la instalacin de un paquete, APT comprueba primero en el sistema que el paquete no est ya instalado y posteriormente comprueba en la base de datos local si el paquete est disponible. Si el paquete est disponible entonces se conecta a la fuente en cuestin para bajarse el paquete (archivo .deb). Estos paquetes bajados se guardan en /var/cache/apt/archives Posteriormente se procede a la instalacin y configuracin automtica del paquete. Si el paquete necesita datos de configuracin nos los pedir el APT.

73

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Paquetes .deb

APT, front-end avanzado para DPKG

Definicin de fuentes para APT:


Se definen en el fichero /etc/apt/sources.list Se pueden configurar con un asistente ejecutando apt setup. Para leer CDs con fuentes podemos utilizar tambin apt cdrom.

Ejemplo de sources.list bsico:

debhttp://ftp.fi.debian.org/debianstablemaincontribnonfree debhttp://ftp.se.debian.org/debiannonUSstable/nonUSmaincontribnonfree debhttp://security.debian.org/stable/updatesmaincontribnonfree

74

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Paquetes .deb

aptcache: realiza bsquedas sobre la base de datos local de paquetes.

til para la obtencin de informacin sobre software disponible.


aptcachesearchpatron: busca paquetes que cumplan un patrn. aptcacheshowpaquete: muestra la informacin de un paquete aptcachedependspaquete: muestra las dependencias del paquete. aptcacherdependspaquete: muestra las dependencias inversas del paquete.

75

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Paquetes .deb

aptget: interfaz para instalar y desinstalar paquetes as como para la generacin y actualizacin de la base de datos local de paquetes.
aptgetupdate: Actualiza la base de datos local de paquetes. aptgetupgrade: Actualiza todos los paquetes instalados que pueda (solo si hay versiones nuevas disponibles) aptgetdistupgrade: Actualiza todos los paquetes que pueda incluso cuando la actualizacin implique la instalacin de paquetes nuevos. aptgetinstallpaquete1paquete2...: Instala paquetes

76

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Paquetes .deb

aptget
aptgetremove[purge]paquete1paquete2 ... : Desinstala paquetes. aptgetclean: elimina archivos descargados en /var/cache/apt/archives (para liberar espacios, NO desinstala los paquetes).

77

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Networking en GNU/Linux

Networking

78

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Configuracin de la red

Las interfaces de red se configuran en el fichero '/etc/network/interfaces' (man interfaces).


aktor@irontec:~$cat/etc/network/interfaces autoeth0eth1 ifaceeth0inetstatic address192.168.0.2 netmask255.255.255.0 broadcast192.168.0.255 gateway192.168.0.1 ifaceeth1inetdhcp

79

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Configuracin de la red

Configuracin manual de la red

ifconfig: configura interfaces de red. Asigna IP, mscara, gateway, etc.


$ifconfigeth0192.168.0.12netmask255.255.255.0up

route: aade rutas estticas. Ejemplo tpico:


$routeadddefaultgw192.168.0.1 $routeaddnet10.10.0.0netmask255.255.255.0gw 192.168.0.100 $routen(muestratabladerutas)

/etc/resolv.conf: indica los servidores DNS


$cat/etc/resolv.conf nameserver195.235.113.3

80

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Configuracin de la red

IP alias: crear un interfaz de red sobre otro.

Una misma red fsica puede albergar distintas redes con distinto direccionamiento y rango.
$ifconfigeth0:1192.168.1.123netmask255.255.255.0

$ifconfigeth0:1 eth0:1 Linkencap:EthernetHWaddr00:14:85:E8:D3:AF inetaddr:192.168.1.123Bcast:192.168.1.255 Mask:255.255.255. UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1 Interrupt:217Baseaddress:0xe800

81

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Configuracin de la red

Configuracin manual de la red

/etc/hosts: realiza una resolucin directa de nombre a IP sin realizar consulta DNS. Normalmente este fichero se mira antes de preguntar al servidor DNS (slo para consulta de tipo A). Para asegurarnos que el sistema pregunte al DNS o al fichero '/etc/hosts' para resolver nombres de host hay que mirar el fichero '/etc/nsswitch.conf'

82

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Configuracin de la red

Configuracin automtica de la red (DHCP)

Configuracin para el arranque: en /etc/network/interfaces definimos la interfaz como inet dhcp Configuracin manual:

se utiliza un cliente dhcp como dhclient o pump


#dhclienteth0 #pumpieth0

83

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Comandos bsicos de administracin de red

ping: manda un mensaje ICMP echo request.

Se utiliza normalmente para comprobar si un interfaz de red remoto est levantado.


$ping212.55.8.132 PING212.55.8.132(212.55.8.132)56(84)bytesofdata. bytesfrom212.55.8.132:icmp_seq=1ttl=242time=166ms hayconectividad!

Nota: Si no hay ping puede que el trfico ICMP est filtrado por algn firewall.

84

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Comandos bsicos de administracin de red

telnet: protocolo de terminal remoto

Se utiliza para conectarse a una mquina remota.


$telnetIPpuerto(default23)

NO es un protocolo seguro (SSH s). Se utiliza tambin para comprobar estado de servicios remotos. Ejemplo:
$telnetwww.euskalnet.net80 Connectedtoeui3h.euskaltel.es. Escapecharacteris'^]'. elservidorwebfunciona!

85

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Comandos bsicos de administracin de red

netstat: muestra conexiones de red

Comando potente que permite mostrar casi toda la informacin de la configuracin TCP/IP de la mquina (man netstat). Ejemplos:
netstatatup#muestratambienprocesos netstata#muestratodaslasconex. netstata|grepLISTEN netstata|grepESTABLISHED netstatnrv#muestratabladerutas

86

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Comandos avanzados administracin de red

iptraf:

87

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Comandos avanzados administracin de red

netcat(nc): navaja suiza de red Capaz de funcionar como cliente, como servidor, etc.
telnet127.0.0.180 Trying127.0.0.1... Connectedto127.0.0.1. Escapecharacteris'^]'. GET/ <!DOCTYPEHTMLPUBLIC"//W3C//DTDHTML3.2 Final//EN"> <html> <head> ...

Lo mismo con netcat (nc):


echoGET/|nc127.0.0.180

Cliente/Servidor:
nclp5000 catfichero|nc192.168.1.15000

88

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Gestin de Incidencias en GNU/Linux

Gestin de Incidencias

89

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Herramientas de monitorizacin

top

Herramienta presente en todos los Unix que muestra informacin de forma continua (cada 3s.) sobre el estado del sistema, incluyendo la lista de procesos que ms CPU estn usando. Los procesos pueden ser ordenados en base a:
Recursos: utilizacin de CPU, memoria... Usuarios: uid, gid... Procesos: prioridad, estado...

90

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Herramientas de monitorizacin

top

91

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Herramientas de monitorizacin

htop

Herramienta similar a top pero con soporte para desplazamiento vertical entre los procesos. Permite gestionar los procesos (reiniciarlos, matarlos..) sin tener que conocer su PID.

92

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Herramientas de monitorizacin

htop

93

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Herramientas de monitorizacin

slmon

Herramienta que permite monitorizar el rendimiento de un sistema en tiempo real. Los recursos que monitoriza son:
Carga de CPU Memoria Interfaces de red N de usuarios logueados Sistemas de ficheros Procesos

94

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Herramientas de monitorizacin

slmon

95

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Herramientas de monitorizacin

iostat

Estadsticas de CPU y acceso a disco (maniostat)

Linux2.6.1526686(mihost)22/11/06 avgcpu:%user%nice%system%iowait%steal%idle 51,290,010,420,130,0048,15 Device:tpsBlk_read/sBlk_wrtn/sBlk_readBlk_wrtn hda2,5514,4559,211382545956666320 hdb0,0918,787,29179676846978592

%user:Uso de CPU en nivel de usuario. %nice:Uso de en nivel de usuario con prioridad. %system:Uso de CPU a nivel de sistema (kernel). %iowait:Porcentaje de tiempo esperando peticiones I/O de disco. %steal:Tiempo de espera involuntario por uso de varios CPU's (virtuales). %idle:Tiempo de espera sin recibir peticin I/O de disco.
96
Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Herramientas de monitoriazin

potion

Consumo de ancho de banda por interfaz y conexin.

potioneth0

97

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Recuperacin ante errores

Gestores de Arranque: LiLo

En caso de que algo haya machacado nuestro MBR...


El objetivo es ejecutar /sbin/lilo de nuestro sistema para volver a escribir el MBR de la mquina y que lilo vuelva a funcionar. Para ello podemos arrancar de diferentes formas:

Diskette de arranque preparado de antemano + /sbin/lilo CD 1 de Debian GNU/Linux con opcion rescue, rescbf24 o similar: Live CD (Knoppix o similar) + montar disco + chroot + /sbin/lilo (ms complicada)

98

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Recuperacin ante errores

Gestores de Arranque: Grub

En caso de que algo haya machacado nuestro MBR...

Podemos recuperarlo de varios modos


Arrancamos con live-CD, montamos la particin, chroot y ejecutamos grubinstall/disco/duro Arrancamos con live-CD, consola, shell de grub (grub) y ejecutamos:
grub>root(hd0,0) grub>setup(hd0) grub>quit

99

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

Curso Linux: Administracin de Sistema y Servicios

Referencias

Bash Scripting:

http://www.tldp.org/LDP/abs/html/

Gestores de arranque:
http://www.gnu.org/software/grub/manual/html_node/ http://www.tldp.org/HOWTO/LILO.html

Gestin de paquetes:

http://www.debian.org/doc/manuals/apt-howto/

Administracin de redes:

http://www.faqs.org/docs/linux_network/
Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

100

Curso Linux: Administracin de Sistema y Servicios

Licencia Copyleft

Para la elaboracin de este documento se han utilizado imgenes y documentos de otras personas como Eduardo Gonzlez de la Herran y Pablo Garaizar Sagarminaga entre otros. Este documento est protegido bajo la licencia Reconocimiento-Compartir-Igual 2.5 Espaa de Creative Common. http://creativecommons.org/licenses/by-sa/2.5/es/
Copyright2006Irontec<contacto@irontec.com> Sepermitelacopia,distribucin,usocomercialy realizacindelaobra,siempreycuandosereconozca laautoradelamisma,anoseaserqueseobtenga permisoexpresodelautor.

101

Iker Sagasti Markina <iker@irontec.com> | Iaki Baz Castillo <ibc@irontec.com>

También podría gustarte