GNU/Linux >> Linux Esercitazione >  >> Linux

Come controllare il runlevel in Linux

Questa breve guida spiega cos'è un runlevel, quanti runlevel ci sono in Linux e come controllare il runlevel nei sistemi operativi Linux.

Cos'è il runlevel?

Un livello di esecuzione è una delle modalità in cui verrà eseguito un sistema operativo basato su Unix. In altre parole, un livello di esecuzione è uno stato di init e l'intero sistema che definisce quali servizi di sistema stanno operando.

Nel kernel Linux esistono 7 runlevel, a partire da 0 a 6. Il sistema può essere avviato in un solo runlevel alla volta.

Per impostazione predefinita, un sistema si avvia al runlevel 3 o al runlevel 5. Il runlevel 3 è CLI e 5 è la GUI. Il runlevel predefinito è specificato in /etc/inittab file nella maggior parte dei sistemi operativi Linux.

Usando il runlevel, possiamo scoprire facilmente se X è in esecuzione o la rete è operativa e così via.

1. Controlla il runlevel in Linux (SysV init)

Ecco l'elenco dei runlevel nelle distribuzioni Linux, che sono stati distribuiti con SysV init come gestore del servizio predefinito.

  • 0 - Ferma
  • 1 - Modalità testo utente singolo
  • 2 - Non utilizzato (definibile dall'utente)
  • 3 - Modalità testo multiutente completo
  • 4 - Non utilizzato (definibile dall'utente)
  • 5 - Modalità grafica multiutente completa (con una schermata di accesso basata su X)
  • 6 - Riavvia

Ora vediamo come trovare i runlevel.

Per scoprire il runlevel di sistema, apri il tuo Terminale ed esegui il seguente comando:

$ runlevel

Risultato di esempio:

N 3

Nell'output sopra, la lettera 'N' indica che il runlevel non è stato modificato dall'avvio del sistema. E, 3 è il runlevel corrente, ovvero il sistema è in modalità CLI.

Nelle versioni più recenti di init , puoi trovare i dettagli del runlevel corrente e precedente utilizzando le variabili di ambiente denominate RUNLEVEL e PREVLEVEL .

Supponiamo, ad esempio, che per scoprire il runlevel corrente, devi eseguire:

$ echo $RUNLEVEL

Per trovare il runlevel precedente:

$ echo $PREVLEVEL

Se desideri cambiare RunLevel in qualcos'altro, modifica /etc/inittab file:

$ sudo vi /etc/inittab

Trova e modifica la voce initdefault al runlevel di tua scelta. Supponiamo, ad esempio, di impostare il runlevel in modalità grafica multiutente (runlevel 5), modificarlo come mostrato di seguito.

id:5:initdefault:

Salva e chiudi il file. Riavvia il sistema per accedere al tuo nuovo runlevel.

Per maggiori dettagli sui runlevel, fare riferimento alle pagine man.

$ man runlevel

2. Controlla il runlevel in Linux (Systemd)

Nelle recenti versioni dei sistemi Linux (a partire da RHEL 7, Ubuntu 16.04 LTS), il concetto di runlevel è stato sostituito con systemd obiettivi.

Ecco l'elenco di Systemd target nelle distribuzioni Linux, che sono state distribuite con Systemd come gestore del servizio predefinito.

  1. runlevel0.target, poweroff.target - Interrompi
  2. runlevel1.target, rescue.target - Modalità testo utente singolo
  3. runlevel2.target, multi-user.target - Non utilizzato (definibile dall'utente)
  4. runlevel3.target, multi-user.target - Modalità testo multiutente completa
  5. runlevel4.target, multi-user.target - Non utilizzato (definibile dall'utente)
  6. runlevel5.target,graphic.target - Modalità grafica multiutente completa (con una schermata di accesso basata su X)
  7. runlevel6.target,reboot.target - Riavvia

Nei sistemi Linux che utilizzano Systemd come gestore di servizi predefinito, puoi trovare la destinazione corrente usando il comando:

$ systemctl get-default

Risultato di esempio:

graphical.target

Come puoi vedere nell'output sopra, il mio attuale runlevel (target in altre parole) è 5 , che è la modalità grafica.

Per visualizzare tutti i target attualmente caricati, esegui:

$ systemctl list-units --type target

Risultato di esempio:

   UNIT                   LOAD   ACTIVE SUB    DESCRIPTION                             
   basic.target           loaded active active Basic System
   bluetooth.target       loaded active active Bluetooth
   cryptsetup.target      loaded active active Local Encrypted Volumes
   getty.target           loaded active active Login Prompts
   graphical.target       loaded active active Graphical Interface
   local-fs-pre.target    loaded active active Local File Systems (Pre)
   local-fs.target        loaded active active Local File Systems
   multi-user.target      loaded active active Multi-User System
   network-online.target  loaded active active Network is Online
   network-pre.target     loaded active active Network (Pre)
   network.target         loaded active active Network
   nfs-client.target      loaded active active NFS client services
   nss-lookup.target      loaded active active Host and Network Name Lookups
   nss-user-lookup.target loaded active active User and Group Name Lookups
   paths.target           loaded active active Paths
   remote-fs-pre.target   loaded active active Remote File Systems (Pre)
   remote-fs.target       loaded active active Remote File Systems
   rpc_pipefs.target      loaded active active rpc_pipefs.target
   rpcbind.target         loaded active active RPC Port Mapper
   slices.target          loaded active active Slices
   sockets.target         loaded active active Sockets
   sound.target           loaded active active Sound Card
   swap.target            loaded active active Swap
   sysinit.target         loaded active active System Initialization
   timers.target          loaded active active Timers
   veritysetup.target     loaded active active Local Verity Integrity Protected Volumes
 LOAD   = Reflects whether the unit definition was properly loaded.
 ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
 SUB    = The low-level unit activation state, values depend on unit type.
 26 loaded units listed. Pass --all to see loaded but inactive units, too.
 To show all installed unit files use 'systemctl list-unit-files'.

Il comando precedente mostrerà solo i target attivi.

Per visualizzare tutti i target caricati (attivi e inattivi), esegui:

$ systemctl list-units --type target --all

Se desideri cambiare RunLevel in qualcos'altro, ad esempio runlevel3.target , impostalo come mostrato di seguito:

$ sudo systemctl set-default runlevel3.target

Per passare a un'unità di destinazione diversa solo nella sessione corrente, eseguire il comando seguente:

$ sudo systemctl isolate runlevel3.target

Per maggiori dettagli, fare riferimento a Systemd pagine man.

$ man systemd

Controlla il runlevel di Linux usando il comando 'chi'

Come suggerito da uno dei lettori nella sezione commenti qui sotto, possiamo anche trovare il runlevel usando who comando come di seguito:

$ who -r

Risultato di esempio:

     run-level 5  2021-06-09 10:21

Spero che questo aiuti.

Lettura correlata:

  • Come elencare i servizi di avvio all'avvio in Linux

Linux
  1. Come Linux è arrivato al mainframe

  2. Come controllare la versione di Redhat

  3. Come controllare il fuso orario in Linux

  4. Come controllare la cronologia di accesso di Linux

  5. Come controllare HZ nel terminale?

Come utilizzare NMAP Security Scanner su Linux

Come controllare tutti i servizi in esecuzione in Linux

Come controllare la complessità della password in Linux

Controlla il fuso orario in Linux

Come controllare lo spazio di scambio in Linux

Come controllare la versione PHP su Linux