GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è la connessione tra le directory /etc/init.d e /etc/rcX.d in Linux?

Dimentichiamo init.d o rcx.d e mantieni le cose molto semplici. Immagina di programmare un programma la cui unica responsabilità è eseguire o terminare altri script uno per uno.

Tuttavia il tuo prossimo problema è assicurarti che funzionino in ordine. Come lo eseguiresti?

E immaginiamo che questo programma abbia guardato all'interno di un scripts cartella per l'esecuzione degli script. Per ordinare la priorità degli script, dovresti nominarli in diciamo ordine numerico. Questo ordine è ciò che determina la relazione tra init.d e rc

In altre parole init.d contiene gli script da eseguire e il rcX.d contiene il loro ordine di esecuzione.

Il X valore in rcX.d è il livello di esecuzione. Questo potrebbe essere vagamente tradotto allo stato attuale del sistema operativo.

Se scavi all'interno del rcX.d script troverai questa formattazione:

Xxxabcd
  • X è sostituito con K o S , che indica se lo script deve essere killed o started nel livello di esecuzione corrente
  • xx è il numero dell'ordine
  • abcd è il nome dello script (il nome è irrilevante tuttavia dove punta è lo script che verrà eseguito)

Esistono diversi sistemi di init per Linux. I principali sono SysVinit (quello tradizionale), Upstart (sostituto di Ubuntu) e SystemD (spinto da Fedora e Gnome). Le directory /etc/init.d e /etc/rc?.d sono utilizzati da SysVinit. Il libro potrebbe menzionarli riguardo a Ubuntu perché le informazioni sono un po' datate (Ubuntu usava SysVinit come tutti gli altri) o perché quelle directory esistono ancora per compatibilità.

/etc/init.d contiene una serie di script, ciascuno contenente le istruzioni per avviare e arrestare un servizio. Alcuni di questi servizi devono essere avviati all'avvio; altri devono essere avviati in modalità multiutente ma non in modalità manutenzione utente singolo; ed è possibile definire diverse modalità con diversi insiemi di servizi desiderati. SysVinit gestisce questo tramite i runlevel. La directory /etc/rc$N.d contengono gli script da eseguire quando si accede al runlevel N (/etc/rc$N.d/S* ) e gli script da eseguire quando si esce dal runlevel N (/etc/rc$N.d/K* ). Poiché molti runlevel hanno script in comune, invece di archiviare una copia degli script per ciascun runlevel, gli script sono tutti archiviati in un'unica posizione /etc/init.d e le directory specifiche del runlevel /etc/rc?.d contengono link simbolici. Inoltre i nomi dei collegamenti simbolici indicano se il servizio deve essere avviato (S* ) o interrotto (ucciso, K* ) in quel runlevel e viene utilizzato un prefisso numerico per controllare l'ordine in cui gli script vengono eseguiti.

Lo script responsabile dell'attraversamento di /etc/rc$N.d è /etc/init.d/rc (su Ubuntu pre-Upstart e su Debian; le posizioni possono variare su altre distribuzioni Linux).


/etc/init.d è la directory a cui appartengono gli script init.

Il etc/rcX.d è dove i collegamenti controllano quali servizi vengono terminati o avviati quando si accede al runlevel X . File in rcX.d che iniziano con K vengono eseguiti con il parametro stop e i file che iniziano con S vengono eseguiti con il parametro start . È normale mettere in sequenza l'ordine di avvio e di arresto utilizzando un numero a due cifre dopo K o S . Per garantire un corretto ordinamento di avvio e arresto, è comune che le due sequenze vengano sommate fino a 100.

I programmi possono essere disabilitati in un livello di esecuzione rimuovendo i collegamenti o modificando le maiuscole e minuscole del K o S a k o s .

EDIT:gli amministratori in genere eseguono gli script da /etc/init.d che può essere un collegamento simbolico a un'altra directory a seconda della distribuzione. (Distribuzioni diverse hanno standard diversi.)

Il rcX.d vengono utilizzati dal codice di inizializzazione per modificare i livelli di esecuzione.


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0?

  3. La differenza tra ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc …?

  4. Linux – Unire /usr/bin e /usr/sbin in /bin (gnu/linux)?

  5. Come viene aggiornato /etc/motd?

Il modo giusto per modificare i file /etc/passwd e /etc/group in Linux

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions

Linux:differenza tra /dev/console , /dev/tty e /dev/tty0

Qual è la differenza tra /tmp e /run?

Perché le directory /home, /usr, /var, ecc. hanno tutte lo stesso numero di inode (2)?

Come configurare /etc/issues per mostrare l'indirizzo IP per eth0