Der Befehl Chkconfig wird verwendet, um Dienste einzurichten, anzuzeigen oder zu ändern, die so konfiguriert sind, dass sie während des Systemstarts automatisch gestartet werden.
Dieser Artikel enthält 7 praktische Beispiele, die die Verwendung des Befehls chkconfig erläutern.
1. Überprüfen Sie den Startstatus des Dienstes im Shell-Skript
Wenn Sie den Befehl chkconfig nur mit dem Dienstnamen ausführen, wird „true“ zurückgegeben, wenn der Dienst für den Start konfiguriert ist. Das folgende Code-Snippet zeigt, wie Sie mit einem Shell-Skript prüfen können, ob ein Dienst für den Start konfiguriert ist oder nicht.
# vi check.sh chkconfig network && echo "Network service is configured" chkconfig junk && echo "Junk service is configured" # ./check.sh Network service is configured
Sie können auch gezielt prüfen, ob es für einen bestimmten Runlevel konfiguriert ist oder nicht.
# vi check1.sh chkconfig network --level 3 && echo "Network service is configured for level 3" chkconfig network --level 1 && echo "Network service is configured for level 1" # ./check1.sh Network service is configured for level 3
2. Aktuellen Status der Startdienste anzeigen
Die Option –list zeigt alle Dienste mit dem aktuellen Status der Startkonfiguration an.
# chkconfig --list abrtd 0:off 1:off 2:off 3:on 4:off 5:on 6:off acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off atd 0:off 1:off 2:off 3:on 4:on 5:on 6:off ...
Gehen Sie wie folgt vor, um nur die Dienste anzuzeigen, die für den Start während des Systemstarts konfiguriert sind. Bitte beachten Sie, dass davon ausgegangen wird, dass Ihre Systemstartstufe 3 ist.
chkconfig --list | grep 3:on
Hinweis :Informationen zum Anzeigen aller verfügbaren System-Runlevels finden Sie unter 6 Phasen des Linux-Startvorgangs
Um die Startkonfiguration eines bestimmten Dienstes anzuzeigen, grep die Ausgabe von „chkconfig –list“ für diesen Dienst.
chkconfig --list | grep network
3. Fügen Sie dem Startup einen neuen Dienst hinzu
Verwenden Sie die Option –add, um einen bestimmten Dienst zur Liste der Dienste hinzuzufügen, die während des Systemneustarts gestartet werden.
Das folgende Beispiel zeigt, wie Sie der Liste der zu startenden Dienste einen neuen Dienst (z. B. iptables) hinzufügen. Der Befehl „chkconfig –add“ schaltet Level 2, 3, 4 und 5 automatisch ein, wie unten gezeigt.
# chkconfig --list | grep iptables # chkconfig --add iptables # chkconfig --list | grep iptables iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Hinweis:„chkconfig –add“ fügt nur einen bestehenden Dienst zur Startliste hinzu. Wenn der Dienst nicht vorhanden ist, sollten Sie ihn zuerst installieren, bevor Sie ihn zur Systemstartliste hinzufügen. Obwohl dies ziemlich offensichtlich ist, ist es erwähnenswert, da ein Neuling diesen Fehler machen könnte.
4. Einen Dienst aus der Startliste entfernen
Das folgende Beispiel zeigt, dass ip6tables-Dienste für den Start konfiguriert sind.
# chkconfig --list | grep ip6tables ip6tables 0:off 1:off 2:off 3:on 4:off 5:off 6:off
Um es aus der Startliste zu entfernen, verwenden Sie die Option –del wie unten gezeigt.
# chkconfig --del ip6tables # chkconfig --list | grep ip6tables
5. Aktivieren oder Deaktivieren eines Dienstes für einen ausgewählten Runlevel
Manchmal möchten Sie vielleicht nicht den gesamten Dienst löschen. Stattdessen möchten Sie vielleicht nur das Flag für einen bestimmten Runlevel (für einen bestimmten Dienst) ein- oder ausschalten.
Das folgende Beispiel schaltet den nfserver-Dienst für Level 5
aus# chkconfig --level 5 nfsserver off
Sie können auch mehrere Ebenen kombinieren. Das folgende Beispiel schaltet nfsserver für Level 3 und 5 aus.
# chkconfig --level 35 nfsserver off
6. Skriptdateien unter rc.d-Unterverzeichnissen
Immer wenn Sie einen Dienst zur chkconfig-Steuerung hinzufügen oder daraus entfernen, geschieht Folgendes in den Unterverzeichnissen /etc/rc.d.
- Wenn der Befehl chkconfig –add ausgeführt wird, erstellt er eine symbolische Linkdatei, um den Dienst im entsprechenden rc-Verzeichnis zu starten und zu stoppen.
- Wenn der Befehl chkconfig –del ausgeführt wird, entfernt er die symbolische Linkdatei aus dem entsprechenden rc-Verzeichnis.
Das folgende Beispiel zeigt, dass xinetd sowohl für Runlevel 3 als auch 5 aktiviert ist.
xinetd hat also zwei Dateien im Verzeichnis rc3.d und zwei Dateien im Verzeichnis rc5.d. Die Datei, die mit K beginnt, wird beim Herunterfahren verwendet (K steht für kill). Die Datei, die mit S beginnt, wird beim Start verwendet (S steht für Start).
# chkconfig --list | grep xinetd xinetd 0:off 1:off 2:off 3:on 4:off 5:on 6:off xinetd based services: # cd /etc/rc.d/rc3.d # ls | grep xinetd K08xinetd S14xinetd # cd /etc/rc.d/rc5.d # ls | grep xinetd K08xinetd S14xinetd
7. rcx.d-Verzeichnisänderungen für den Vorgang „Hinzufügen“
Wenn Sie der chkconfig-Steuerung einen neuen Dienst hinzufügen, werden die Standardausführungsebenen für diesen Dienst automatisch aktiviert und Dateien werden unter den entsprechenden rcx-Verzeichnissen erstellt.
Wenn beispielsweise der nfsserver-Dienst nicht im chkconfig-Steuerelement vorhanden ist, sind keine Startdateien des nfsserver-Dienstes in den Verzeichnissen /etc/rc.d/rc*.d vorhanden, wie unten gezeigt.
# chkconfig --list | grep nfsserver nfsserver 0:off 1:off 2:off 3:off 4:off 5:off 6:off # ls /etc/rc.d/rc3.d | grep nfsserver # ls /etc/rc.d/rc5.d | grep nfsserver
Nachdem Sie den nfsserver-Dienst hinzugefügt haben, sehen Sie die symbolischen Links unter diesen Verzeichnissen.
# chkconfig --add nfsserver nfsserver 0:off 1:off 2:off 3:on 4:off 5:on 6:off # cd /etc/rc.d/rc3.d # ls -l | grep nfsserver lrwxrwxrwx 1 root root 12 2011-06-18 00:52 K08nfsserver -> ../nfsserver lrwxrwxrwx 1 root root 12 2011-06-18 00:52 S14nfsserver -> ../nfsserver # cd /etc/rc.d/rc5.d # ls -l | grep nfsserver lrwxrwxrwx 1 root root 12 2011-06-18 00:52 K08nfsserver -> ../nfsserver lrwxrwxrwx 1 root root 12 2011-06-18 00:52 S14nfsserver -> ../nfsserver
Wenn Sie den Dienst entweder mit der Option –del oder der Option –level deaktivieren, wird die entsprechende symbolische Linkdatei im Verzeichnis rcx.d wie unten gezeigt gelöscht.
# chkconfig --level 5 nfsserver off # ls /etc/rc.d/rc5.d | grep nfsserver