Alternative de Chkconfig pour Ubuntu Server?


144

Je me suis habitué à gérer les démarrages de services sur les plates-formes Redhat / RHEL, chkconfigbien que cela ne semble pas être la méthode Debian / Ubuntu. Comment mettre à jour les informations de niveau d'exécution des services système sur Ubuntu?

À la recherche ultime des équivalents de:

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

1
BTW: vous pouvez également apt-get install chkconfigle package sur Ubuntu. Cependant, il est cassé depuis des années, le lien symbolique suivant le fera fonctionner (quelque peu):ln -s /usr/lib/insserv/insserv /sbin/insserv
eckes

Réponses:


125

L'équivalent à chkconfigestupdate-rc.d

Les équivalents que vous recherchez sont

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

Consultez cette page utile pour plus d'informations ou consultez man update-rc.d


5
update-rc.d est uniquement destiné à être utilisé dans des scripts de packaging, pas par des humains. C'est aussi pour les scripts d'init, que Ubuntu n'utilise pas. Ubuntu utilise Upstart.
maco

11
"Veuillez noter que ce programme a été conçu pour être utilisé dans les scripts du mainteneur de paquets et que, par conséquent, il ne dispose que des fonctionnalités très limitées requises par ces scripts. Les administrateurs système ne sont pas encouragés à utiliser update-rc.d pour gérer les niveaux d'exécution. Ils doivent éditer les liens. directement ou utilisez des éditeurs de niveau d'exécution tels que sysv-rc-conf et bum à la place. " Depuis la page de manuel
maco

4
J'accepte cette réponse car les pages de manuel mises à jour ont supprimé cet avertissement. manpages.ubuntu.com/manpages/lucid/man8/update-rc.d.8.html
Marco Ceppi

4
Ce qui ne change toujours pas le fait qu'Ubuntu n'utilise même pas les scripts d'initialisation SysV de nos jours et update-rc.d est seulement pour eux.
maco

1
Il y a encore des scripts sysv utilisés et surtout ils fonctionnent aussi avec upstart. Donc, si vous n'avez pas eu le temps de convertir un script, vous pouvez toujours l'utiliser de cette façon.
eckes

53

Sysv-rc-conf est la meilleure alternative. Pour l’installation, il suffit d’exécuter la commande:

sudo apt-get install sysv-rc-conf

Une fois installé, lancez la commande:

sudo sysv-rc-conf

Vous pouvez cocher ou décocher les options permettant de démarrer un service à n'importe quel niveau d'exécution. Vous pouvez même arrêter ou démarrer les services à partir de cette console. C'est un outil indispensable pour activer ou désactiver les applications de manière permanente au démarrage de votre ubuntu. Si vous avez besoin d'une modification rapide, vous pouvez utiliser l'interface CLI:

Par exemple pour arrêter ssh aux niveaux 3 et 5 d'exécution:

sysv-rc-conf-off level 35 ssh

Pour démarrer dans les niveaux d'exécution 2,3,4 et 5:

sysv-rc-conf on atd

Si vous voulez en savoir plus:

man sysv-rc-conf

C'est exactement ce dont j'avais besoin, sauf que je le faisais sysv-rc-conf apache2 on/ sysv-rc-conf apache2 offetc.
Adam K Dean

Cela fonctionne pour moi par rapport à update-rc.d qui cherchait des scripts de programme dans le répertoire /etc/init.d/ où certains programmes comme vsftpd ne sont pas installés.
David Okwii

Travaillé pour moi sur Ubuntu 14.04
Hashid Hameed le

Vous avez une faute de frappe: sysv-rc-conf-off level 35 sshdevrait êtresysv-rc-conf --level 35 ssh off
Slam

Testé en travaillant sur Ubuntu 16.04LTS , où update-rc.dpas.
Sopalajo de Arrierez

10

À l'heure actuelle, il n'y a pas d'équivalent dans une version stable pour faire des choses avec des scripts Upstart. Jacob Peddicord a écrit jobservice (démon backend) et jobs-admin (interface graphique GTK + qui lui parle) pour son projet Google Summer of Code. Les paquets Lucid sont dans son PPA . Ils existent également dans l’Univers de Maverick. Il n'y a pas encore de serveur en ligne de commande pour jobservice, juste jobs-admin.


10

Essaye ça:

apt-get install chkconfig

Cela fonctionne, au moins à partir de la version Ubuntu 12.04.


6
Ne fonctionne pas le 12.10
expert le

have 12.04, et apt-get install chkconfig donne: "Le paquet 'chkconfig' n'a pas de candidat pour l'installation". Qu'y a-t-il dans votre fichier /etc/apt/sources.list?
John Little

On dirait que la dernière a été publiée pour précise: 12.04: 1.0-79.1-2 0 in http://us.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages. Certaines corrections ne l'ont jamais fait dans un package.
eckes

2
Pas de paquet sur Ubuntu 14.04. Avons-nous besoin d'ajouter une autre source?
Hashid Hameed le

5

Permet de marcher de zéro à objectif - comment le faire étape par étape.

Étape 1: permet d'écrire un monde bonjour

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

EOF

Étape 2: automatisons notre application hello world server.py

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

Étape 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
  • Ainsi, à l’étape 3, le système au démarrage exécutera automatiquement server.py en tant que démon et facilitera l’automatisation.

J'espère que ça a aidé.


2
+1: réponse très utile mais je pense que la mauvaise question y est attachée.
Claris
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.