[General] sysv-rc para manejar servicios en Debian/Ubuntu [Was: Re: Servicios]
Hardy Beltran Monasterios
hbm en hardy.com.bo
Mie Jun 20 20:06:17 BOT 2007
El mié, 20-06-2007 a las 12:10 -0400, Alfonso Fernandez escribió:
> eso es algo que detestaba en la distro debian-like que usaba... una
> forma no simple de deshabilitar los servicios del sistema.
>
> en distros RedHat/FC/CentOS-like es mas simple:
>
> Habilitar/Deshabilitar el servicio
> # chkconfig <servicio> on|off
>
> Iniciar/Parar un servicio:
> # service <servicio> start|stop|restart
>
> tal vez me diran que existen tambien utilidades buenas en debian/ubuntu.
> Cuales??? probe todas las que pude encontrar, y ninguna colmo mis
> expectativas, incluso un port de chkconfig para esa distro.
Para los que venimos de un moundo RedHat, service y chkconfig son
realmente una cosa muy bonita.
He visto que almenos Ubuntu, ya se instala el paquete sysv-rc y dice de
él:
# dpkg -l sysv-rc | tail -1
ii sysv-rc 2.86.ds1-6ubuntu32 Standard boot mechanism using
symlinks in /etc/rc?.d
Mirando el paquetillo, un equivalente al service(RH) es invoke-rc.d
Esto pasa en mi Ubuntu al usarlo:
root en agua:~# /usr/sbin/invoke-rc.d mysql restart
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for crashed MySQL tables in the background.
(Bonito no Alfonso ;-) )
Ahora uno similar al chkconfig(RH) es update-rc.d, claro que no es tan
bonita su sintaxis comparado al chkconfig. Pero veamos que hace:
1. Curiosidad: ¿ Cuándo se levanta MySQL en mi sistema ?
root en agua:~# find /etc/rc[0-9].d -name "*mysql"
/etc/rc0.d/K20mysql
/etc/rc1.d/K20mysql
/etc/rc2.d/S20mysql
/etc/rc3.d/S20mysql
/etc/rc4.d/S20mysql
/etc/rc5.d/S20mysql
/etc/rc6.d/K20mysql
Respuesta: En los niveles 2,3,4 y 5 (S=start, K=kill)
2. Quitar MySQL para que no levante durante el inicio
root en agua:~# /usr/sbin/update-rc.d -f mysql remove
Removing any system startup links for /etc/init.d/mysql ...
/etc/rc0.d/K20mysql
/etc/rc1.d/K20mysql
/etc/rc2.d/S20mysql
/etc/rc3.d/S20mysql
/etc/rc4.d/S20mysql
/etc/rc5.d/S20mysql
/etc/rc6.d/K20mysql
3. Repetir 1. para ver que hizo :-)
root en agua:~# find /etc/rc[0-9].d -name "*mysql"
root en agua:~#
Respuesta: No hay nada, MySQL ya no se levanta mas durante el inicio
4. Quiero que levante en nivel 2 y 3
root en agua:~# /usr/sbin/update-rc.d mysql start 20 2 3 . stop 20 0 1 4 5
6 .
Adding system startup for /etc/init.d/mysql ...
/etc/rc0.d/K20mysql -> ../init.d/mysql
/etc/rc1.d/K20mysql -> ../init.d/mysql
/etc/rc4.d/K20mysql -> ../init.d/mysql
/etc/rc5.d/K20mysql -> ../init.d/mysql
/etc/rc6.d/K20mysql -> ../init.d/mysql
/etc/rc2.d/S20mysql -> ../init.d/mysql
/etc/rc3.d/S20mysql -> ../init.d/mysql
Que horrible sintaxis verdad Alfonso. En RH es más bonito, sería así:
chkconfig --level 23 mysql on
update-rc.d tiene daño cerebral comparado a chkconfig. update-rc.d
necesita indicarle los niveles para subir y para bajar. Además que
necesita saber en que orden lo va subir
start 20 2 3 = Dice subir (S=start) en el puesto 20, en niveles 2 y 3
stop 20 0 1 4 5 6 = Dice bajar (K=kill) en el puesto 20, en niveles
1,4,5,6
5. Horrible sintaxis la anterior, mejor borrar todo y usar los niveles y
orden predeterminados
root en agua:~# /usr/sbin/update-rc.d -f mysql remove
(salida omitida)
root en agua:~# /usr/sbin/update-rc.d mysql defaults
Adding system startup for /etc/init.d/mysql ...
/etc/rc0.d/K20mysql -> ../init.d/mysql
/etc/rc1.d/K20mysql -> ../init.d/mysql
/etc/rc6.d/K20mysql -> ../init.d/mysql
/etc/rc2.d/S20mysql -> ../init.d/mysql
/etc/rc3.d/S20mysql -> ../init.d/mysql
/etc/rc4.d/S20mysql -> ../init.d/mysql
/etc/rc5.d/S20mysql -> ../init.d/mysql
Evidentemente no tan avanzado como chkconfig pero al final también útil.
En resumen, Debian/Ubuntu ya tiene script para manejar la subida/bajada
de servicios durante el arranque. Estos vienen en el paquete sysv-rc y
son los predeterminados que usan los paquetes como apache, mysql, php,
etc, etc, al momento de instalarse en el sistema.
Saludos
Hardy Beltran Monasterios
Más información sobre la lista de distribución general