lunes, 14 de febrero de 2011

Desactivar servicios en Ubuntu

Si tenemos instalados los servidores apache y mysql con la finalidad de probar nuestro sitio antes de subirlo al hosting pero no tenemos intención de convertir nuestra PC en un servidor entonces no tiene sentido tener apache y mysql corriendo desde que se enciende el equipo hasta que se apaga.

Para desactivar apache y mysql:

sudo update-rc.d apache2 disable
sudo mv /etc/init/mysql.conf /etc/init/mysql.conf.disabled

Para lanzar apache y mysql cuando queramos:

sudo /etc/init.d/apache2 start
sudo mv /etc/init/mysql.conf.disabled /etc/init/mysql.conf
sudo start mysql

Para volver a habilitar apache2 y mysql al inicio del sistema:

sudo update-rc.d apache2 enable
sudo mv /etc/init/mysql.conf.disabled /etc/init/mysql.conf

He visto que en muchos foros recomiendan desactivar un servicio de la siguiente forma: sudo update-rc.d apache2 remove lo cual está equivocado como explica las páginas del manual de update-rc.d:

A common system administration error is to delete the links with the thought that this will "disable" the service, i.e., that this will prevent the service from being started. However, if all links have been deleted then the next time the package is upgraded, the package's postinst script will run update-rc.d again and this will reinstall links at their factory default locations. The correct way to disable services is to configure the service as stopped in all runlevels in which it is started by default. In the System V init system this means renaming the service's symbolic links from S to K.

Yo también llevo un tiempo haciéndolo de la forma equivocada y cada vez que se actualizaban los paquetes se volvían a activar los servicios.

Otro método:

Aunque lo que propongo más arriba funciona, es incómodo puesto que implica estar renombrando el archivo /etc/init/mysql.conf. Para evitar ese paso, lo que se puede hacer es editar el archivo:

sudo gedit /etc/init/mysql.conf

Y cambiar esto:

start on (net-device-up
          and local-filesystems
          and runlevel [2345])

A esto:

start on (never
          and net-device-up
          and local-filesystems
          and runlevel [2345])

De esta forma mysql no iniciará con el sistema, pero sí podemos hacer sudo start mysql en cualquier momento sin necesidad de estar renombrando el archivo mysql.conf constantemente.

Referencias:

4 comentarios: