Il comando Chkconfig viene utilizzato per impostare, visualizzare o modificare i servizi configurati per l'avvio automatico durante l'avvio del sistema.
Questo articolo contiene 7 esempi pratici che spiegano come usare il comando chkconfig.
1. Verifica lo stato di avvio del servizio da Shell Script
Quando esegui il comando chkconfig solo con il nome del servizio, restituisce true se il servizio è configurato per l'avvio. Il seguente frammento di codice mostra come verificare se un servizio è configurato per l'avvio o meno da uno script di shell.
# vi check.sh chkconfig network && echo "Network service is configured" chkconfig junk && echo "Junk service is configured" # ./check.sh Network service is configured
Puoi anche controllare in modo specifico se è configurato per un particolare livello di esecuzione o meno.
# 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. Visualizza lo stato attuale dei servizi di avvio
L'opzione –list mostra tutti i servizi con lo stato di configurazione di avvio corrente.
# 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 ...
Per visualizzare solo i servizi configurati per essere avviati durante l'avvio del sistema, procedere come segue. Tieni presente che questo presuppone che il livello di avvio del tuo sistema sia 3.
chkconfig --list | grep 3:on
Nota :per visualizzare tutti i livelli di esecuzione del sistema disponibili, fare riferimento a 6 fasi del processo di avvio di Linux
Per visualizzare la configurazione di avvio di un particolare servizio, grep l'output di 'chkconfig –list' per quel servizio.
chkconfig --list | grep network
3. Aggiungi un nuovo Servizio alla Startup
Utilizzare l'opzione –add per aggiungere un servizio specifico all'elenco dei servizi che verranno avviati durante il riavvio del sistema.
L'esempio seguente mostra come aggiungere un nuovo servizio (ad esempio, iptables) all'elenco dei servizi che devono essere avviati. Anche il comando 'chkconfig –add' attiverà automaticamente i livelli 2, 3, 4 e 5 come mostrato di seguito.
# 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
Nota:"chkconfig –add" aggiunge solo un servizio esistente all'elenco di avvio. Se il servizio non esiste, dovresti prima installarlo prima di aggiungerlo all'elenco di avvio del sistema. Anche se questo è abbastanza ovvio, vale la pena menzionarlo, poiché un principiante potrebbe commettere questo errore.
4. Rimuovere un servizio dall'elenco di avvio
L'esempio seguente mostra che i servizi ip6tables sono configurati per l'avvio.
# chkconfig --list | grep ip6tables ip6tables 0:off 1:off 2:off 3:on 4:off 5:off 6:off
Per rimuoverlo dall'elenco di avvio, utilizzare l'opzione –del come mostrato di seguito.
# chkconfig --del ip6tables # chkconfig --list | grep ip6tables
5. Attiva o disattiva un servizio per un livello di esecuzione selezionato
A volte potresti non voler eliminare l'intero servizio. Invece, potresti semplicemente voler attivare o disattivare il flag per un particolare livello di esecuzione (per un particolare servizio).
L'esempio seguente disattiverà il servizio nfserver per il livello 5
# chkconfig --level 5 nfsserver off
Puoi anche combinare più livelli. L'esempio seguente disattiverà nfsserver sia per il livello 3 che per il livello 5.
# chkconfig --level 35 nfsserver off
6. File di script nelle sottodirectory rc.d
Ogni volta che aggiungi o rimuovi un servizio dal controllo chkconfig, fa quanto segue nelle sottodirectory /etc/rc.d.
- Quando il comando chkconfig –add viene eseguito, crea un file di collegamento simbolico per avviare e arrestare il servizio nella directory rc corrispondente.
- Quando il comando chkconfig –del viene eseguito, rimuove il file di collegamento simbolico dalla directory rc corrispondente.
L'esempio seguente mostra che xinetd è abilitato sia per il livello di esecuzione 3 che per il 5.
Quindi, xinetd avrà due file nella directory rc3.d e due file nella directory rc5.d. Il file che inizia con K viene utilizzato durante l'arresto (K sta per kill). Il file che inizia con S viene utilizzato durante l'avvio (S sta per 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 Modifiche alla directory per l'operazione di aggiunta
Quando aggiungi un nuovo servizio al controllo chkconfig, i livelli di esecuzione predefiniti per quel servizio verranno attivati automaticamente e i file verranno creati nelle directory rcx corrispondenti.
Ad esempio, se il servizio nfsserver non esiste nel controllo chkconfig, nessun file di avvio del servizio nfsserver sarebbe presente nelle directory /etc/rc.d/rc*.d come mostrato di seguito.
# 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
Dopo aver aggiunto il servizio nfsserver, vedrai i collegamenti simbolici in queste directory.
# 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
Quando si disattiva il servizio utilizzando l'opzione –del o l'opzione –level, il file di collegamento simbolico corrispondente nella directory rcx.d verrà eliminato come mostrato di seguito.
# chkconfig --level 5 nfsserver off # ls /etc/rc.d/rc5.d | grep nfsserver