Chkconfig Alternative für Ubuntu Server?


144

Ich habe mich sehr daran gewöhnt, Dienststarts auf Redhat / RHEL-Plattformen zu verwalten, chkconfigobwohl dies nicht die Debian / Ubuntu-Methode zu sein scheint - Wie aktualisiere ich Runlevel-Informationen für Systemdienste auf Ubuntu?

Letztendlich auf der Suche nach den Äquivalenten von:

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

1
Übrigens: Sie können apt-get install chkconfigdas Paket auch auf Ubuntu. Allerdings ist es seit Jahren kaputt, der folgende Symlink wird es (etwas) zum ln -s /usr/lib/insserv/insserv /sbin/insserv
Laufen bringen

Antworten:


125

Das Äquivalent zu chkconfigistupdate-rc.d

Die Äquivalente, die Sie suchen, sind

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

Weitere Informationen finden Sie auf dieser nützlichen Seite oder unter man update-rc.d


5
update-rc.d darf nur in Paketskripten verwendet werden, nicht von Menschen. Dies gilt auch für Init-Skripte, die Ubuntu nicht verwendet. Ubuntu benutzt Upstart.
Maco

11
"Bitte beachten Sie, dass dieses Programm für die Verwendung in Paketwartungsskripten entwickelt wurde und dementsprechend nur über die sehr eingeschränkte Funktionalität verfügt, die für solche Skripten erforderlich ist. Systemadministratoren werden nicht aufgefordert, update-rc.d zum Verwalten von Runlevels zu verwenden. Sie sollten die Links bearbeiten direkt oder verwenden Sie stattdessen Runlevel-Editoren wie sysv-rc-conf und bum. " Von der Manpage: manpages.ubuntu.com/manpages/hardy/man8/update-rc.d.8.html
maco

4
Ich akzeptiere diese Antwort, da die aktualisierten Manpages diese Warnung entfernt haben. manpages.ubuntu.com/manpages/lucid/man8/update-rc.d.8.html
Marco Ceppi

4
Daran ändert auch nichts, dass Ubuntu heutzutage nicht einmal SysV-Init-Skripte verwendet und update-rc.d nur für sie ist.
Maco

1
Es werden immer noch einige Sysv-Skripte verwendet, und insbesondere funktionieren sie auch mit Upstart. Wenn Sie also nicht die Zeit hatten, ein Skript zu konvertieren, können Sie es trotzdem auf diese Weise verwenden.
Eckes

53

Beste Alternative IMHO ist sysv-rc-conf Zum Installieren muss nur der Befehl ausgeführt werden:

sudo apt-get install sysv-rc-conf

Führen Sie nach der Installation den folgenden Befehl aus:

sudo sysv-rc-conf

Sie können die Optionen zum Starten eines Dienstes auf jeder Ausführungsebene aktivieren oder deaktivieren und die Dienste möglicherweise von dieser Konsole aus beenden oder starten. Es ist ein unverzichtbares Tool zum dauerhaften Aktivieren oder Deaktivieren von Anwendungen, um Ihr Ubuntu zu starten. Wenn Sie eine schnelle Änderung benötigen, können Sie die CLI-Oberfläche verwenden:

Zum Beispiel, um ssh auf den Ebenen 3 und 5 der Ausführung zu stoppen:

sysv-rc-conf-off level 35 ssh

Start in Runlevel 2,3,4 und 5:

sysv-rc-conf on atd

Wenn Sie mehr wissen wollen:

man sysv-rc-conf

Dies ist genau das, was ich brauchte, außer ich tat sysv-rc-conf apache2 on/ sysv-rc-conf apache2 offetc.
Adam K Dean

Dies funktioniert für mich im Vergleich zu update-rc.d, das nach Programmskripten im Verzeichnis /etc/init.d/ gesucht hat, in denen einige Programme wie vsftpd nicht installiert sind.
David Okwii

Arbeitete für mich auf Ubuntu 14.04
Hashid Hameed

Sie haben Tippfehler: sysv-rc-conf-off level 35 sshsollte seinsysv-rc-conf --level 35 ssh off
Slam

Getestet auf Ubuntu 16.04LTS arbeiten , wo update-rc.dnicht.
Sopalajo de Arrierez

10

Gegenwärtig gibt es keine Entsprechung für eine stabile Version, um Dinge mit Upstart-Skripten zu tun. Jacob Peddicord schrieb jobservice (Backend-Daemon) und jobs-admin (GTK + GUI, das mit ihm spricht) für sein Google Summer of Code-Projekt. Klare Pakete sind in seinem PPA . Sie existieren auch im Universum in Maverick. Es gibt noch kein Kommandozeilen-Frontend für jobservice, nur jobs-admin.


10

Versuche dies:

apt-get install chkconfig

Dies funktioniert zumindest ab Ubuntu 12.04.


6
Funktioniert nicht am 12.10.
Experte

habe 12.04, und apt-get install chkconfig gibt an: "E: Paket 'chkconfig' hat keinen Installationskandidaten". Was ist in Ihrer Datei /etc/apt/sources.list?
John Little

Es sieht so aus, als wäre die neueste Version veröffentlicht worden: 12.04: 1.0-79.1-2 0 in http://us.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages. Einige Korrekturen haben es nie in ein Paket geschafft.
Eckes

2
Kein Paket auf Ubuntu 14.04. Müssen wir eine weitere Quelle hinzufügen?
Hashid Hameed

5

Gehen wir von NULL zum Ziel - wie geht das Schritt für Schritt?

Schritt 1: Lass uns eine Hallo Welt schreiben

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

EOF

Schritt 2: Lassen Sie uns unseren Hello World Application Server.py automatisieren

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

Schritt 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
  • In Schritt 3 führt das System beim Booten die Datei server.py automatisch als Daemon aus und vereinfacht die Automatisierung

Hoffe es hat geholfen.


2
+1: Sehr nützliche Antwort, aber ich denke, dass die falsche Frage damit verbunden ist.
Claris
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.