“Linux Como estación de trabajo” (2da. Edicion)

Clase 2


Inicio del sistema


Aqui vimos como se inicia Linux y que archivos se leen al iniciar el sistema.
Linux utiliza el esquema SysV(System Five) de arranque del sistema. En este esquema, se tiene un script para cada programa o servicio que se debe ejecutar al iniciar el sistema y un archivo principal que se encarga de llamar a estos script.
Tambien existe el concepto de runlevel. Un runlevel viene a ser una configuracion de ejecucion del sistema. Asi, se pueden configurar varias configuraciones y pasar de una configuracion a otra.
Estos runlevel o configuraciones son a nivel de programas. Es decir, se definen que programas deben estar corriendo y cuales no en un cierto runlevel.

Secuencia de booteo.
Aqui se presenta un resumen de que pasa cuando Linux bootea.

  1. Se carga el kernel en memoria

    1. El kernel se carga por medio del lilo u otro boot manager. La mayor parte del kernel esta comprimido y la parte que no esta comprima se carga primero y luego descomprime la parte comprimida.

  2. Le llama a /sbin/init

    1. El init es el primer proceso que se ejecuta y es llamado directo desde el kernel.

    2. El init se configura con el archivo /etc/inittab. El init puede ejecutar tambien programas, por ejemplo los prompt de login de las terminales virtuales las levanta el y se especifica en el archivo /etc/inittab

    3. El init se queda corriendo todo el tiempo.

  3. Se leen archivos de configuracion

    1. El init lee el archivo /etc/inittab y luego llama al programa /etc/rc.d/rc para que levante los servicios del runlevel por defecto. El runlevel por defecto tambien se configura en /etc/inittab

    2. El /etc/rc.d/rc tambien ejecuta los script de inicializacion que estan en: /etc/rc.d/rc.*

    3. Estos son: el primero es rc.sysinit y el ultimo rc.local. Pueden haber otros como rc.serial que se ejecuta entre los dos anteriormente citados

  4. Se ejecutan los programas del runlevel por defecto

    1. Como habiamos visto, el int le llama a /etc/rc.d/rc y le pasa como parametro el runlevel al cual se quiere pasar.

    2. Asi, el rc ejecuta los scripts que estan en el directorio /etc/rc.d/rcx.d, donde x es el numero de runlevel

Introduccion a los runlevels


Como habiamos visto los runlevels son configuraciones de programas daemon o servicios. Los runlevels van de 0 a 6.
Los runlevel 0,1 y 6 estan reservados, los demas pueden ser usados por el usuario para configuraciones a medida.
Para saber que servicios ejecutar y cuales no, existen los directorios /etc/rc.d/rcx.d/
Existe un directorio para cada runlevel y dentro del mismo esta la configuracion del runlevel.
Por ejemplo el runlevel 3 esta configurado en: /etc/rc.d/rc3.d/
La forma de configurar un runlevel es a traves de links o enlaces simbolicos a servicios. Los servicios se levantan o bajan por medio de scripts, los cuales estan en el directorio /etc/rc.d/init.d/
Entonces, si uno quiere que se ejecute un determinado servicio, crea un link de la forma:

[S,K][00-99]nombre


Donde 'nombre' es el nombre del script que se encuentra en /etc/rc.d/init.d/
La S significa Start y la K Kill. Los numeros del 00 al 99 son el orden de ejecucion del script.
Asi, si queremos que el runlevel 3 se ejecute el servicio apache y no se ejecute el servicio sendmail, tendriamos
en el directorio /etc/rc.d/rc3.d/ lo sigte:
K30sendmail -> ../init.d/sendmail
S85apache -> ../init.d/apache


Los links con menor numero se ejcutan primero. Los links que empiesan con K se ejecutan primero que los que empiesan con S. Lo que hace el /etc/rc.d/rc es leer los links del directorio y si empiesa con una K, llama al script pasando como parametro la palabra stop. Si empieza con una S, le pasa el parametro start

Generalmente los numeros de K y S de un mismo servicio si se suman dan 100. Asi, si el apache se inicio con el numero de secuencia 85(esto es casi al final) al cerrar el sistema se tendria que bajar dentro de los primeros numeros, osea 15(casi uno de los primeros).


Introduccion a servicios
Los servicios ejecutan daemons o programas que corren todo el tiempo. Ejemplos de esto son: servidor web apache, servidor de email sendmail, etc.
Los servicios son scripts y se encuentran en el directorio: /etc/rc.d/init.d/
Para levantar un servicio, se ejecuta el script y se le pasa el parametro start. Para bajarlo, se le pasa el parametro stop.
Si no se le pasa ningun parametro, el script imprime las opciones de parametros validos.
Por ejemplo si modificamos el archivos de configuracion del apache y queremos bajar y luego levantar el servicio
para que los cambios tengan efecto, podemos hacer esto:
/etc/rc.d/init.d/httpd stop
/etc/rc.d/init.d/httpd start

Otra opcion es pasarle el parametro restart que hace lo mismo:
/etc/rc.d/init.d/httpd restart



Directorios del Sistema


Directorio

Que se encuentra dentro

/boot

Imagenes del kernel y archivos de booteo

/root

archivos personales del administrador

/etc

archivos de configuracion

/bin

archivos executables del sistema

/sbin

archivos executables usados para configurar el sistema

/usr

archivos de usuarios/programas

/home

archivos personales de usuarios

/var

archivos de trabajo de programas(http, proxy, mail, spool de impresoras, etc)

/tmp

archivos temporales de trabajo. Todos pueden escribir aqui

/dev

archivos de dispositivos(ide, scsi, puertos seriales, etc)

/proc

directorio en memoria. Acceso a informacion de procesos, informacion de hardware y configuracion en tiempo de ejecucion del kernel y dispositivos

/opt

programas que contienen todo lo que necesitan en un solo directorio (Ej. Star Office)



Aplicaciones de texto vs aplicaciones gráficas


Linux no necesita un entorno de ventanas para funcionar. Las aplicaciones que funcionan bajo terminales o consolas las llamaremos aplicaciones de texto o aplicaciones de consola.


Se portó un sistema de ventanas llamado X/Window, muy popular en el mundo Unix.


Las aplicaciones que funcionan bajo X/Window las llamaremos aplicaciones gráficas o aplicaciones para X/Window.



Uso del interprete de comandos BASH


bash es un shell o interprete de comandos. En donde interactuamos con el sistema operativo. Donde ejecutamos programas y le pedimos al sistema operativo que realize tareas.


Como ejecutar comandos

Un comando se ejecuta asi:

PATH/EJECUTABLE PARM1 PARM2

PATH puede set el path completo(/bin) o el directorio actual(.).

EJECUTABLE es un nombre valido de programa

PARM[1,2,...] pueden ser parametros o opciones.

Las opciones empiesan con '-' o '--'. Los parametros que llevan espacios se debe colocar entre comillas dobles(").


Variables del sistema

Las variables del sistema se crean con el comando 'export' y con convencion debe estar en mayusculas.

Para refererirse a una variable, se debe colocar el caracter de peso($) al comienzo del nombre de la misma.

Ejemplo:

export HELLO="hello world"

echo "hey, $HELLO"


Archivos de inicializacion

Los archivos de inicializacion del bash se separan en dos grupos: globales y de usuario.

Las configuraciones globales son para todos los usuarios y nadie se escapa. Estos son:

/etc/bashrc : usado para aliases

/etc/profile : usado para configurar variables del sistema

/etc/profile.d/ : script que son llamados desde /etc/profile


Las configuracion de usuario son:

~/.bashrc : equivalente a /etc/bashrc, siempre se ejcuta

~/.bash_profile : equivalente a /etc/profile, solo se ejecuta en un shell de login

~/.bash_logout : se ejecuta siempre antes de salir del shell actual


El simbolo '~' se reemplaza siempre por el directorio home del usuario.

Por ejemplo: si mi login es user1, '~' es el equivalente a /home/user1/ y puedo usarlo en el bash.

$ echo ~

$ cd ~

$ ls -l ~/.bashrc


Administracion de procesos

Un proceso es un progrma que se esta ejecutando.

Para ejecutar un proceso en background, se debe colocar el caracter '&' al final del comando.

El comando 'jobs' lista los procesos que estan en background solo en el shell actual

Los comandos 'fg' y 'bg' se usan para traer y llevar un proceso a foreground y background respectivamente.

Foreground significa que el programa tiene conectado el STDIN al teclado, y STDOUT y STDERR a la pantalla.

Para leer mas, ejecutar 'help fg'.

El comando help nos da ayuda sobre los comandos incorporados del bash. jobs, fg y bg son comandos del bash y no programas ejecutables.


Redireccionamiento

Redireccionar significa conectar un file descriptor a un archivo u otro file descriptor.

Para direccionar el STDOUT a un archivo se usa el caracter reservado '>'. Con este caracter sobreescribimos el archivos

de destino, con '>>' contatenamos.



Ejemplo:

$ ls -1 ~ > /tmp/mi_home.txt

$ echo "---------------------" >> /tmp/mi_home.txt

$ date >>/tmp/mi_home.txt


Para redireccionar STDIN(teclado) se usa '< nombre_archivo'.

Para redireccionar selectivamente STDOUT y STDERR usar 1 y 2 para STDOUT y STDERR respectivamente.


Ejemplo:

$ make ejecutable 1>compilacion.log 2>error.log


Para redireccionar el STDOUT de una comando al STDIN de otro comando se usa el caracter pipe '|'.


Ejemplo:

$ ps aux | grep bash


El sigte es un ejemplo un poco mas divertido, muesta la fecha de inicio de todo los procesos iniciados por root:

$ ps waux | grep root | tr -s "[:blank:]" | cut -d" " -f2,9


carácter

que hace

;

delimita un comando de otro

&

pasa el comando a background

\

continua el comando en una nueva linea

|

pipe, direccionar STDOUT a otro comando

>, >>

direccionarmiento a archivo

<

direccionamiento de archivo a STDIN

"

comilla doble, usado para delimitar un parametro con espacio

$

usado para ver el contenido de una variable

~

sinonimo del directorio home del usuario actual


Shorcuts de teclado


Combinacion de teclas

que hace

Ctrl+A

ir al comienzo de la linea de edicion

Ctrl+E

ir al final de la linea de edicion

Ctrl+U

borra todo desde el cursor al comienzo de la linea de edicion

Ctrl+R

busca una cadena en el historial de comandos(salir con Ctrl+A o Ctrl+E)

Ctrl+C

enviar la senhal de ICP, llamada SIGINT, al comando actual

Ctrl+Z

enviar la senhal de ICP, llamada STOP, al comando actual

Ctrl+S

scroll lock ON

Ctrl+Q

scroll lock OFF

Ctrl+M

igual que oprimir ENTER

Ctrl+L

refresh screen

Ctrl+H

igual que BACKSPACE

Ctrl+P,flecha arriba

comando anterior

Ctrl+N, flecha abajo

comando sigte

Ctrl+I, TAB

completa el comando/parametro que mas se le parece a lo ya escrito




Hosted by www.Geocities.ws

1