¿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>
Marco Ceppi
fuente
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

Richard Holloway
fuente
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
jokerulez
fuente
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.

maco
fuente
10

Prueba esto:

apt-get install chkconfig

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

Andrew Davison
fuente
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.

Yum Yum Yum
fuente
2
+1: Respuesta muy útil, pero creo que tiene una pregunta incorrecta adjunta.
Claris