Detener el programa que se ejecuta al inicio en Linux

29

¿Cómo detengo un programa que se ejecuta al inicio en Linux? Quiero eliminar algunas aplicaciones del inicio para permitir que sean administradas por, por supervisordejemplo, apache2

Frozenskys
fuente
Esa es exactamente la razón por la que no lo etiqueté ... Estoy buscando todas las variaciones mientras trabajo con bastantes distribuciones diferentes.
Frozenskys

Respuestas:

29

Dependiendo de su distribución, use la herramienta chkconfig o update-rc.d para habilitar / deshabilitar los servicios del sistema.

En un sistema de estilo redhat / suse / mandrake:

sudo chkconfig apache2 off 

En Debian:

sudo update-rc.d -f apache2 remove

Consulte sus páginas de manual para obtener más información.

jacksonh
fuente
¿Por qué necesita -f (supongo que es forzado) en distribuciones basadas en Debian?
Frozenskys
2
Hay dos conjuntos de archivos en juego aquí. Tiene el script de inicio real en /etc/init.d/ y tiene los enlaces a él en su directorio de nivel de ejecución /etc/rcrunlevel.d/. Estos chicos señalan el script en /etc/init.d/ Si no usa -f update-rd.d fallará A MENOS QUE el script en /etc/init.d/ ya esté eliminado. Si utiliza -f update-rc.d eliminará correctamente los archivos de enlace independientemente de si se elimina o no el script /etc/init.d/.
jacksonh
Ah, eso tiene mucho sentido, había olvidado que los scripts de nivel de ejecución eran solo enlaces a los scripts de inicio. Gracias por la explicación extra.
Frozenskys
6

Si se trata de un sistema Ubuntu moderno y algunas otras distribuciones, es posible que deba lidiar con una combinación de scripts de inicio tradicionales y scripts de arranque. La gestión de scripts de inicio está cubierta por otras respuestas. La siguiente es una forma de detener el inicio de un servicio inicial en el arranque:

# mv /etc/init/servicename.conf /etc/init/servicename.conf.disabled

El problema con este método es que no le permite iniciar el servicio usando:

# service start servicename

Una alternativa a esto es abrir el servicename.confarchivo en su editor favorito y comentar las líneas que comienzan con:

start on

Es decir, cambie esto a

#start on ...

donde el "..." es lo que fue después de "comenzar" anteriormente. De esta manera, cuando desee volver a habilitarlo, no tiene que recordar cuáles fueron los parámetros de "inicio".

Finalmente, si tiene una nueva versión de arranque, simplemente puede agregar la palabra "manual" al final del archivo de configuración. Puede hacer esto directamente desde el shell:

# echo "manual" >> /etc/init/servicename.conf

Esto provocará que upstart ignore cualquier frase de "inicio" anterior en el archivo.

Steven D
fuente
2

En los recientes sistemas Fedora y Future RHEL

systemctl disable httpd.service

deshabilitará el servicio httpd

Alastair
fuente
¡Gracias! Había probado muchos métodos, pero este systmctlcomando funcionó bien.
amado.por.Jesús
1

Para enumerar todos los servicios de inicio

    systemctl

Para detener la ejecución de un servicio al iniciar

    sudo systemctl disable servicename

Por ejemplo, si necesitamos dejar de ejecutar el servidor ssh al inicio

    sudo systemctl disable sshd.service

Podemos habilitar esto nuevamente usando

    sudo systemctl enable sshd.service

Casi todas las distribuciones de Linux usan systemd para los servicios de arranque de arranque. Entonces, los comandos anteriores funcionan para la mayoría de las distribuciones.

Príncipe
fuente
¡Bienvenido a U&L, y gracias por tu contribución! Me gustaría señalar que esta pregunta tiene aproximadamente ocho años, por lo que la respuesta aceptada fue correcta para la época. Usar systemctl puede ser correcto ahora , pero es correcto para una pregunta diferente .
Jeff Schaller
@Prince gracias por las explicaciones detalladas. Me ayudó a entender cómo funciona el inicio de arranque en mi Xubuntu.
amado.por.Jesús
0

Slackware y Arch Linux tienen métodos similares para detener / iniciar procesos en el arranque, diferentes a los ejemplos de Ubuntu y de estilo Redhat dados anteriormente.

Tanto en Slackware como en Linux, los scripts sh existen en el directorio /etc/rc.d, generalmente un script por demonio o un script por subsistema.

Por ejemplo, Slackware inicia el servidor web Apache con un script /etc/rc.d/rc.httpd, llamado en el momento apropiado durante el inicio del sistema con un argumento de "inicio". Arch Linux tiene scripts con nombres diferentes, pero sucede lo mismo.

Para evitar que se inicie algún proceso durante el arranque del sistema, en Slackware, solo debe hacer que el script apropiado en /etc/rc.d no sea ejecutable. Para evitar que Apache comience en el próximo arranque:

chmod -x /etc/rc.d/rc.httpd

Para detener un Apache que comenzó en el arranque: /etc/rc.d/rc.httpd stop deberá ser root.

Arch es un poco más complejo. El archivo /etc/rc.conf, un script de shell, tiene una matriz DAEMONS. Para evitar que Apache comience en el arranque, debe cambiar esta línea en /etc/rc.conf:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd httpd ntpd postgresql)

A esta línea:

DAEMONS=(hal syslog-ng network netfs crond alsa sshd ntpd postgresql)

Para detener un apache que ya se está ejecutando, debe ejecutarlo /etc/rc.d/httpd stopcomo root.

Bruce Ediger
fuente
0

En Ubuntu 10.04 puedes controlar algunos programas de inicio desde la GUI.

SystemPreferencesStartup Applications

Preferencias de aplicaciones de inicio

jjclarkson
fuente
1
La imagen original ya no está allí.
tshepang
-1

1) toque la superclave en su teclado 2) busque 'Aplicaciones de inicio' 3) elija el programa que desea deshabilitar 4) presione como esta respuesta si worx.

Bhasha Bhavanishankar
fuente