¿Cómo evito que los servicios de Linux se inicien automáticamente?

11

Recientemente migré de Windows a Linux (xubuntu)

Soy desarrollador y he instalado todo lo que necesito, LAMP. En Windows, solía desactivar todos los servicios innecesarios; no necesito el servicio Apache o MySQL ejecutándose todo el tiempo. Siempre que necesitaba MySQL solía usar:

net start mysql

¿Cómo hago lo mismo en Linux?

  1. ¿Desactivar demonios no necesarios del inicio automático?
  2. ¿Comenzarlos solo cuando los necesito?
Aviv
fuente
3
Creo que debería incluir la versión exacta de ubuntu que está utilizando. Las nuevas versiones de ubuntu usan advenedizo, que tiene sus propios trucos.
vtest
Editar: estoy usando la última versión 10.04 de Xubuntu, pero la identificación no quiero usar y la GUI para esto, solo desde la terminal. Parece que @prhq tiene algo en su respuesta. ¿Qué es advenedizo?
Aviv
Pertenece a otra parte, ya sea en Server Fault o Unix. Sin embargo, sigue siendo útil.
ripper234

Respuestas:

10

En la mayoría de las distribuciones de Linux, puede iniciar / detener servicios manualmente (como root o usando sudo) ejecutando los siguientes comandos:

# /etc/init.d/apache2 start
# /etc/init.d/mysqld start

# /etc/init.d/apache2 stop
# /etc/init.d/mysqld stop

Los servicios que se inician automáticamente se controlan mediante enlaces de archivos en /etc/rc[runlevelfont>.d/. Encuentra tu nivel de ejecución actual usando el comando "runlevel" como root

# runlevel
N 2

Lo que aquí indica el nivel de ejecución 2 Ahora solo tiene que eliminar esos archivos en /etc/rc2.d/ que no desea iniciar.

Eliminar apache y Mysql en un escritorio generalmente está bien, pero tenga en cuenta la eliminación de otros servicios.

hultqvist
fuente
3
Esto es bastante engañoso, incluso si dijiste "la mayoría de las distribuciones". Calificaría su receta como distribución específica.
vtest
¿Qué tienes en mente? Solo puedo pensar en ArchLinux (pero esos usuarios ya deberían saber lo que están haciendo). Por supuesto, algunas distribuciones tienen herramientas específicas, pero la técnica anterior también funciona en ellas.
hultqvist
Muy extraño, puedo ver un archivo llamado S91apache2 en el directorio /etc/rc2.d, supongo que inicia el apache2 ... pero no puedo encontrar ningún archivo relacionado con MySQL. ¿Dónde puedo obtener información sobre estos demonios de inicio automático?
Aviv
Entonces el servidor mysql podría no estar configurado para el inicio automático. Parece que este sitio tiene una buena explicación: yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html
hultqvist
Tenga en cuenta que bajo * BSD y el árbol de Slackware, el directorio es /etc/rc.d/.
nuevo123456
13

Para las versiones de Ubuntu que usan systemd (15.04 y posterior) use:

systemctl disable service

Esto hará el trabajo. Deshabilitará el servicio y no se reiniciará después de un reinicio. Para habilitar temporalmente simplemente inicie el servicio. No permita .

Para encontrar el nombre del servicio use

service --status-all

Otros comandos son:

systemctl start service- Úselo para iniciar un servicio. No persiste después de reiniciar

systemctl stop service- Úselo para detener un servicio. No persiste después de reiniciar

systemctl restart service - Úselo para reiniciar un servicio

systemctl status service- Muestra el estado de un servicio. Indica si un servicio se está ejecutando actualmente.

systemctl enable service- Activa el servicio, en el próximo reinicio o en el próximo evento de inicio. Persiste después de reiniciar.

systemctl disable service- Desactiva el servicio en el próximo reinicio o en el siguiente evento de parada. Persiste después de reiniciar.

Nandesh
fuente
2
Es una pena que no sea la respuesta aceptada :). Gracias, me olvidé por completo de ese comando.
Nordes
8

Ubuntu 10.04 está en medio de una transición entre dos sistemas de administración de servicios: SysVinit (el sistema tradicional, utilizado por la mayoría de las distribuciones de Linux) y Upstart (un sistema más nuevo impulsado por Ubuntu y que está disponible en más y más distribuciones).

Los scripts de administración del servicio SysVinit están en /etc/init.d. Puede iniciar el servicio con /etc/init.d/SERVICENAME starty detenerlo con /etc/init.d/SERVICENAME stop. Si el servicio se inicia automáticamente en el arranque depende de la presencia de enlaces simbólicos en /etc/rc?.ddonde ?es un dígito a partir 2de 5(el nivel de ejecución ). La forma más fácil de evitar que un servicio se inicie automáticamente al arrancar es usarlo update-rc.d SERVICENAME disable.

Los archivos de configuración de administración del servicio de inicio están en /etc/init. Puede iniciar el servicio con start SERVICENAMEy detenerlo con stop SERVICENAME. El archivo de configuración /etc/init/SERVICENAME.confcontiene una línea que indica cuándo iniciar el servicio: start on …. Una manera fácil de deshabilitar estos servicios es cambiar esa línea a start on never and (…). Si no desea editar el archivo, también puede deshabilitar completamente el servicio sin confundir el sistema de empaque cambiando el nombre para que no termine .conf.

dpkg-divert --add --local --divert /etc/init/foo.conf.disabled --rename /etc/init/foo.conf

A partir de Ubuntu 10.04, Apache viene con un script SysVinit y Mysql viene con un script Upstart.

Gilles 'SO- deja de ser malvado'
fuente
¿Es la edición del servicename.conf realmente la forma preferida? Especialmente cuando las actualizaciones teóricamente pueden actualizar esos archivos de configuración y anular sus cambios
Masse
@Masse: No siempre es la forma preferida, pero tiene la ventaja de trabajar siempre. Algunos servicios leen un archivo /etc/defaulty tienen una START_FOOopción allí que puede desactivar, pero muchos esperan ejecutar si están instalados. Las actualizaciones no sobrescribirán sus cambios sin preguntar, ya que todos estos son conffiles.
Gilles 'SO- deja de ser malvado'
Guau. Esto parece un gran paso atrás.
Masa
@Masse: los administradores deben editar los conffiles. Pero si no desea hacer eso, también puede usar dpkg-divertpara cambiar el nombre del archivo de servicio. Sin embargo, si lo hace, no podrá iniciar el servicio explícitamente.
Gilles 'SO- deja de ser malvado'