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
Paquete

(K)Ubuntu
KDE
Gnome Emule
2

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

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.

Debian Sarge

Versin estable de Debian.

Probada y testeada a conciencia.

ptima para un servidor en produccin.

Debian Testing e Inestable

Versiones de desarrollo y experimentacin.


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

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

Instalacin para i386:

http://www.us.debian.org/releases/stable/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

11

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...

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:

12

Metes crudo por 0 (STDIN), consigues gasolina por 1


(STDOUT) y bastantes residuos por el desage 2 (STDERR).

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

17

Con #! en la primera lnea indicamos quin debera


interpretar el resto de comandos (/bin/sh).
Posteriormente escribimos los comandos separados por
saltos de lnea.

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.

18

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

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

21

./nombre.shJuanLpezMartnez
./nombre.shMariaDoloresPradera
Snchez

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

23

$#: 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.

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

25

(ojoespacios!)

(ojoescaparoperadores!)

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

26

(AL REVS QUE EN C!!)

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

41

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.

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

44

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.

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:

50

whiptail: ncurses, aspecto mejorado

Xdialog: widgets X simples

gdialog: GNOME

kdialog: KDE

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

Curso Linux: Administracin de Sistema y Servicios

Tareas peridicas

cron

51

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.

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.

53

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>

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/

56

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.

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

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.

58

La BIOS busca un dispositivo de inicio (disco duro, CDROM,..) y pasa el control al MBR (512 bytes).

Se ejecutan los scripts indicados por el nivel de ejecucin de


arranque.

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

Curso Linux: Administracin de Sistema y Servicios

Gestores de arranque

LiLo

59

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.

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

60

#OtrosS.O.

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

62

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.

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

65

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)

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

68

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/

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

82

/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'

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!

84

Nota: Si no hay ping puede que el trfico ICMP est filtrado


por algn firewall.

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

92

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.

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:

Administracin de redes:

100

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

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

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