Tabla de contenidos
Denominamos servicios en Linux a las aplicaciones, o conjunto de ellas, que están arrancadas esperando a ser utilizadas, o llevando a cabo tareas esenciales en "background".
Al ser Linux un sistema orientado a redes una parte importante son servicios de red, que utilizan el protocolo tcp/ip. Por ser tema a parte la administración de redes sólo describiremos los servicios sin entrar en al administración.
Una vez que instalamos un servicio en Linux, normalmente
debe ser configurado. Los servicios se deben configurar
normalmente con sus parámetros de arranque, y también suele
crear un fichero o un directorio en el directorio
/etc
.
Como el servicio será arrancado en el inicio de sistema, se
suele crear un script de inicio en el directorio
/etc/init.d
. Es un shell script arrancable
que recibe un parámetro que puede ser: start, stop,
restart y status. Algunos servicios pueden tener otros parámetros, si lo
ejecutamos sin parámetros nos mostrará los posibles.
Con start arrancamos el servicio. Este parámetro es obligatorio en cualquier script de arranque. Dependiendo el servicio que sea configurará algunas características el servicio y ejecutará un proceso que quedará como demonio (proceso en background con unas características especiales).
Stop nos permite parar el servicio. Si existe un proceso en background del servicio, este será retenido. Es muy habitual que el servicio cuando arranca deje un PID en un fichero, que permitirá al script localizar y matar el proceso.
Restart realiza una parada y luego arranca el sistema de nuevo.
Status nos indica si el servicio esta arrancado.
Para arrancar por ejemplo el servicio de base de datos mysql, tendríamos:
[sal]#
cd /etc/init.d
[sal]#
./mysql
Usage: /etc/init.d/mysql start|stop|restart|reload|force-reload
[sal]#
./mysql start
Starting MySQL database server: mysqld. Checking for crashed MySQL tables in the background.
[sal]#
Siempre que queramos podemos ir al directorio donde se encuentra
el script de arranque y ejecutarlo con el parámetro que nos
interese. Pero si queremos que el servicio se arranque cuando se
inicia el sistema y se pare cuando se apague o reinicie, los script
tiene que estar en un directorio preparado para ello. Lo que se hace
es enlazar (link) desde el directorio con el servicio en
init.d
. Según el directorio donde lo pongamos se
arrancará en un determinado modo de arranque o se parará:
Tabla 10.1. Tabla de modos
Modo | Directorio | Descripción |
---|---|---|
1 | /etc/rc1.d | Servicios que se arrancan cuando el sistema se arranca en modo de Usuario Único. No se permite conectar nada más que al root desde consola. |
2 | /etc/rc2.d | Servicios que se arrancan en modo multiusuario, pero sin algunos servicios de red. |
3 | /etc/rc3.d | Servicios que se arrancan en modo multiusuario, con los servicios de red arrancados, pero en modo consola, sin las X. |
4 | /etc/rc4.d | No se suele utilizar. |
5 | /etc/rc5.d | Servicios que se arrancan en modo multiusuario, con los servicios de red y X. |
6 | /etc/rc6.d | Servicios que se ejecutan en parada o reinicio. |
Los modos de arranque de 2 al 4 son configurables por el administrador realmente, lo descrito anterior es la recomendación, pero la configuración por defecto de las distribuciones es diferente en cada una de ellas.
El arranque de los servicios y
modo, así como alguna configuración de arranque más lo realiza el
proceso init que tiene el fichero de configuración /etc/inittab
.
Los nombres los links en estos directorios es distinto a como
están denominados en /etc/init.d
, tiene una
nomenclatura. La primera letra en una S cuando se llamará al servicio
con el parámetro start, y una K cuando se llame con el parámetro
stop. A continuación lleva el número en el que se quiere ejecutar el
servicio y luego el nombre. Vemos un ejemplo:
[pcm@sal]$
cd /etc/rc2.d
[pcm@sal]$
ls -l
lrwxrwxrwx 1 root root 18 Feb 27 2004 S10sysklogd -> ../init.d/sysklogd lrwxrwxrwx 1 root root 15 Feb 27 2004 S11klogd -> ../init.d/klogd lrwxrwxrwx 1 root root 13 Feb 27 2004 S14ppp -> ../init.d/ppp lrwxrwxrwx 1 root root 17 Apr 30 2004 S18portmap -> ../init.d/portmap lrwxrwxrwx 1 root root 14 Feb 27 2004 S20apmd -> ../init.d/apmd lrwxrwxrwx 1 root root 26 Apr 24 2005 S20clamav-freshclam -> ../init.d/clamav-freshclam lrwxrwxrwx 1 root root 16 Feb 27 2004 S20cupsys -> ../init.d/cupsys lrwxrwxrwx 1 root root 17 Apr 24 2005 S20dirmngr -> ../init.d/dirmngr lrwxrwxrwx 1 root root 14 Feb 27 2004 S20exim -> ../init.d/exim lrwxrwxrwx 1 root root 13 Mar 4 2004 S20fam -> ../init.d/fam lrwxrwxrwx 1 root root 17 Mar 4 2004 S20hddtemp -> ../init.d/hddtemp lrwxrwxrwx 1 root root 15 Feb 27 2004 S20inetd -> ../init.d/inetd lrwxrwxrwx 1 root root 19 Feb 27 2004 S20linuxconf -> ../init.d/linuxconf lrwxrwxrwx 1 root root 14 Mar 5 2004 S20lisa -> ../init.d/lisa lrwxrwxrwx 1 root root 13 Feb 27 2004 S20lpd -> ../init.d/lpd lrwxrwxrwx 1 root root 17 Feb 27 2004 S20makedev -> ../init.d/makedev lrwxrwxrwx 1 root root 15 Apr 24 2005 S20mysql -> ../init.d/mysql lrwxrwxrwx 1 root root 27 Feb 27 2004 S20nfs-kernel-server -> ../init.d/nfs-kernel-server lrwxrwxrwx 1 root root 15 Feb 27 2004 S20samba -> ../init.d/samba lrwxrwxrwx 1 root root 13 Feb 27 2004 S20ssh -> ../init.d/ssh lrwxrwxrwx 1 root root 18 Apr 30 2004 S20timidity -> ../init.d/timidity lrwxrwxrwx 1 root root 16 Feb 18 14:06 S20webmin -> ../init.d/webmin lrwxrwxrwx 1 root root 23 Feb 3 2006 S20wpasupplicant -> ../init.d/wpasupplicant lrwxrwxrwx 1 root root 20 Mar 4 2004 S21nfs-common -> ../init.d/nfs-common lrwxrwxrwx 1 root root 18 Oct 24 2004 S21quotarpc -> ../init.d/quotarpc lrwxrwxrwx 1 root root 17 Feb 29 2004 S21sensord -> ../init.d/sensord lrwxrwxrwx 1 root root 15 Apr 24 2005 S50pcscd -> ../init.d/pcscd lrwxrwxrwx 1 root root 24 Aug 24 2005 S85vpnclient_init -> ../init.d/vpnclient_init lrwxrwxrwx 1 root root 13 Feb 27 2004 S89atd -> ../init.d/atd lrwxrwxrwx 1 root root 14 Feb 27 2004 S89cron -> ../init.d/cron lrwxrwxrwx 1 root root 16 Feb 27 2004 S91apache -> ../init.d/apache lrwxrwxrwx 1 root root 15 Mar 4 2004 S98local -> ../init.d/local lrwxrwxrwx 1 root root 13 Feb 27 2004 S99kdm -> ../init.d/kdm lrwxrwxrwx 1 root root 19 Feb 27 2004 S99rmnologin -> ../init.d/rmnologin lrwxrwxrwx 1 root root 23 Mar 4 2004 S99stop-bootlogd -> ../init.d/stop-bootlogd
[pcm@sal]$