¿Alternativa Chkconfig para Ubuntu Server?


144

Me he acostumbrado a administrar nuevas empresas de servicios en plataformas Redhat / RHEL, chkconfigaunque eso no parece ser Debian / Ubuntu. ¿Cómo actualizo la información de nivel de ejecución para los servicios del sistema en Ubuntu?

Finalmente buscando los equivalentes de:

chkconfig --add <service>
chkconfig --level 345 <service> on
chkconfig --del <service>

1
Por cierto: también puedes apt-get install chkconfigel paquete en ubuntu. Sin embargo, está roto desde hace años, el siguiente enlace simbólico hará que funcione (algo):ln -s /usr/lib/insserv/insserv /sbin/insserv
eckes

Respuestas:


125

El equivalente a chkconfigesupdate-rc.d

Los equivalentes que buscas son

update-rc.d <service> defaults
update-rc.d <service> start 20 3 4 5
update-rc.d -f <service>  remove

Consulte esta página útil para obtener más información o consulte man update-rc.d


55
update-rc.d solo debe usarse para empaquetar scripts, no para humanos. También es para scripts de inicio, que Ubuntu no usa. Ubuntu usa Upstart.
maco

11
"Tenga en cuenta que este programa fue diseñado para su uso en scripts de mantenimiento de paquetes y, en consecuencia, solo tiene la funcionalidad muy limitada requerida por dichos scripts. No se recomienda a los administradores del sistema usar update-rc.d para administrar los niveles de ejecución. Deben editar los enlaces directamente o use editores de nivel de ejecución como sysv-rc-conf y bum en su lugar ". Desde la página de manual
maco

44
Estoy aceptando esta respuesta porque las páginas man actualizadas han eliminado esa advertencia. manpages.ubuntu.com/manpages/lucid/man8/update-rc.d.8.html
Marco Ceppi

44
Lo que todavía no cambia el hecho de que Ubuntu ni siquiera usa scripts de inicio SysV hoy en día y update-rc.d es solo para ellos.
maco

1
Todavía se utilizan algunas secuencias de comandos sysv y, especialmente, también funcionan con el sistema de arranque. Entonces, si no tuvo el tiempo para convertir un script, aún podría usarlo de esta manera.
Eckes

53

La mejor alternativa en mi humilde opinión es sysv-rc-conf Para instalar solo necesita ejecutar el comando:

sudo apt-get install sysv-rc-conf

Una vez instalado, ejecute el comando:

sudo sysv-rc-conf

Puede marcar o desmarcar las opciones para iniciar un servicio en cualquier nivel de ejecución e incluso puede detener o iniciar los servicios desde esta consola. Es una herramienta indispensable para habilitar o deshabilitar aplicaciones de forma permanente para iniciar su ubuntu. Si necesita un cambio rápido, puede usar la interfaz CLI:

Por ejemplo, para detener ssh en los niveles 3 y 5 de ejecución:

sysv-rc-conf-off level 35 ssh

Atd para comenzar en los niveles de ejecución 2,3,4 y 5:

sysv-rc-conf on atd

Si quieres saber más:

man sysv-rc-conf

Esto es exactamente lo que necesitaba, excepto que lo hice sysv-rc-conf apache2 on/ sysv-rc-conf apache2 offetc.
Adam K Dean

Esto funciona para mí en comparación con update-rc.d que buscaba scripts de programa en el directorio /etc/init.d/ donde algunos programas como vsftpd no están instalados.
David Okwii

Trabajó para mí en Ubuntu 14.04
Hashid Hameed

Tienes un error tipográfico: sysv-rc-conf-off level 35 sshdebería sersysv-rc-conf --level 35 ssh off
Slam

Probado trabajando en Ubuntu 16.04LTS , donde update-rc.dno lo hizo.
Sopalajo de Arrierez

10

En este momento, no hay un equivalente en una versión estable para hacer cosas con secuencias de comandos Upstart. Jacob Peddicord escribió jobservice (backend daemon) y jobs-admin (GTK + GUI que habla con él) para su proyecto Google Summer of Code. Los paquetes lúcidos están en su PPA . También existen en Universe en Maverick. Todavía no existe una línea de comando para el servicio de trabajo, solo jobs-admin.


10

Prueba esto:

apt-get install chkconfig

Esto funciona, al menos como el lanzamiento de Ubuntu 12.04.


66
No funciona el 12.10
experto

tiene 12.04, y apt-get install chkconfig da: "E: El paquete 'chkconfig' no tiene candidato de instalación". ¿Qué hay en su archivo /etc/apt/sources.list?
John Little

Parece que lo último fue publicado con precisión: 12.04: 1.0-79.1-2 0 in http://us.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages. Algunas correcciones nunca se convirtieron en un paquete.
Eckes

2
No hay paquete en Ubuntu 14.04. ¿Necesitamos agregar otra fuente?
Hashid Hameed

5

Caminemos de CERO a Goal: cómo hacerlo paso a paso.

Paso 1: escribamos un hola mundo

cat >> /var/tmp/python/server.py <<\EOF
#/usr/bin/python
import time
while True:
  print "hello> YES Bello"
  time.sleep(30)

EOF

Paso 2: hagamos que nuestra aplicación hello world server.py sea automatizada

cat >> /var/tmp/myserver.sh <<\EOF
#!/bin/sh
script='/var/tmp/python/server.py'
export DISPLAY=:0.0 && /usr/bin/python $script &

EOF
chmod +x /var/tmp/myserver.sh

cat >> /etc/init.d/myserver <<\EOF

#! /bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/var/tmp/myserver.sh
PIDFILE=/var/run/myserver.pid

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

case "$1" in
  start)
     log_daemon_msg "Starting feedparser"
     start_daemon -p $PIDFILE $DAEMON
     log_end_msg $?
   ;;
  stop)
     log_daemon_msg "Stopping feedparser"
     killproc -p $PIDFILE $DAEMON
     PID=`ps x |grep server.py | head -1 | awk '{print $1}'`
     kill -9 $PID       
     log_end_msg $?
   ;;
  force-reload|restart)
     $0 stop
     $0 start
   ;;
  status)
     status_of_proc -p $PIDFILE $DAEMON atd && exit 0 || exit $?
   ;;
 *)
   echo "Usage: /etc/init.d/atd {start|stop|restart|force-reload|status}"
   exit 1
  ;;
esac

exit 0


EOF
chmod +x /etc/init.d/myserver
chmod -R 777 /etc/init.d/myserver

Paso 3:

$ update-rc.d myserver defaults
update-rc.d: warning: /etc/init.d/myserver missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/myserver ...
   /etc/rc0.d/K20myserver -> ../init.d/myserver
   /etc/rc1.d/K20myserver -> ../init.d/myserver
   /etc/rc6.d/K20myserver -> ../init.d/myserver
   /etc/rc2.d/S20myserver -> ../init.d/myserver
   /etc/rc3.d/S20myserver -> ../init.d/myserver
   /etc/rc4.d/S20myserver -> ../init.d/myserver
   /etc/rc5.d/S20myserver -> ../init.d/myserver
  • Entonces, en el paso 3, el sistema en el arranque ejecutará automáticamente el server.py como daemon y facilitará la automatización

Espero que haya ayudado.


2
+1: Respuesta muy útil, pero creo que tiene una pregunta incorrecta adjunta.
Claris
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.