GNU/Linux >> Linux Esercitazione >  >> Linux

10 pratici comandi di sistema:un riferimento

systemd scadente ha avuto la sua parte di detrattori, ma sembra essere qui per rimanere per gli amministratori di Linux, quindi potremmo anche abituarci. Questo pratico systemd il riferimento ai comandi ti aiuterà a mantenere la tua sanità mentale quando provi a svolgere normali attività amministrative. Quindi, finché non otteniamo qualcosa che sia più utilizzabile, appetibile e desiderabile di systemd , goditi questo elenco di dieci pratici comandi per tua comodità. Questi comandi non sono in un particolare ordine di importanza o pertinenza.

Elenca i file delle unità

Dal systemd pagina man:Un file unit è un file in stile ini di testo semplice che codifica le informazioni su un servizio, un socket, un dispositivo, un punto di montaggio, un punto di montaggio automatico, un file di scambio o una partizione, una destinazione di avvio, un file controllato percorso di sistema, un timer controllato e supervisionato da systemd , una sezione di gestione delle risorse o un gruppo di processi creati esternamente.

$ systemctl list-unit-files

UNIT FILE                                     STATE   
proc-sys-fs-binfmt_misc.automount             static  
dev-hugepages.mount                           static 
dev-mqueue.mount                              static 
proc-sys-fs-binfmt_misc.mount                 static  
sys-fs-fuse-connections.mount                 static  
sys-kernel-config.mount                       static  
sys-kernel-debug.mount                        static  
tmp.mount                                     disabled
brandbot.path                                 disabled
systemd-ask-password-console.path             static  
systemd-ask-password-plymouth.path            static  
systemd-ask-password-wall.path                static  
session-1.scope                               static  
arp-ethers.service                            disabled
auditd.service                                enabled 
[email protected]                               enabled 

<many more entries>

Ovviamente puoi sempre inviare un pipe a grep per vedere solo i servizi abilitati.

$ systemctl list-unit-files |grep enabled

auditd.service                                enabled 
[email protected]                               enabled 
crond.service                                 enabled 
dbus-org.fedoraproject.FirewallD1.service     enabled 
dbus-org.freedesktop.nm-dispatcher.service    enabled 
firewalld.service                             enabled 
[email protected]                                enabled 
irqbalance.service                            enabled 
kdump.service                                 enabled 
lvm2-monitor.service                          enabled 

<many more entries>

Questi file di unità, che si trovano in /lib/systemd/system , sono più o meno equivalenti agli script di inizializzazione legacy che si trovavano in /etc/rc.d/init.d . Infatti, se tu o la tua installazione del software create degli script init, un corrispondente systemd il file unit è mappato per te. Un'ulteriore spiegazione è data da /etc/rc.d/init.d/README :

You are looking for the traditional init scripts in /etc/rc.d/init.d,
and they are gone?

Here's an explanation on what's going on:

You are running a systemd-based OS where traditional init scripts have
been replaced by native systemd services files. Service files provide
very similar functionality to init scripts. To make use of service
files simply invoke "systemctl", which will output a list of all
currently running services (and other units). Use "systemctl
list-unit-files" to get a listing of all known unit files, including
stopped, disabled and masked ones. Use "systemctl start
foobar.service" and "systemctl stop foobar.service" to start or stop a
service, respectively. For further details, please refer to
systemctl(1).

Note that traditional init scripts continue to function on a systemd
system. An init script /etc/rc.d/init.d/foobar is implicitly mapped
into a service unit foobar.service during system initialization.

Thank you!

Further reading:
        man:systemctl(1)
        man:systemd(1)
        http://0pointer.de/blog/projects/systemd-for-admins-3.html
        http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities

Come puoi vedere, init.d è stato rimosso a favore di systemd . È qui per restare finché qualcuno non trova qualcosa di meglio. (Spero che qualcuno stia lavorando rapidamente su una sostituzione.)

Elenca unità

L'elenco delle unità attive mostra molte informazioni utili sui servizi caricati e attivi. L'output è troppo dettagliato per essere illustrato qui, ma prova il seguente comando sul tuo sistema per vedere cosa intendo.

$ systemctl list-units

I campi di stato sono fantastici da vedere, ma il campo della descrizione è il più utile per me. Fornisce informazioni dettagliate sui tuoi servizi.

Avvia un servizio

Per ottenere un nome di servizio, elenca i file dell'unità e grep per quello che desideri. Quindi usa il systemctl comando per avviare il servizio. Sto usando firewalld come l'esempio.

$ sudo systemctl start firewalld

Sorprendentemente, o forse non così sorprendentemente, non c'è risposta dall'avvio, dall'arresto o dal riavvio di un servizio. Per controllare lo stato di un servizio, devi utilizzare il comando status.

Verifica dello stato di un servizio

Per controllare lo stato di un servizio, utilizza systemctl status service-name comando.

$ sudo systemctl status sshd
[sudo] password for khess: 
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-04-29 07:44:57 CDT; 2h 17min ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1055 (sshd)
   CGroup: /system.slice/sshd.service
           └─1055 /usr/sbin/sshd -D

Apr 29 07:44:57 centos7 systemd[1]: Starting OpenSSH server daemon...
Apr 29 07:44:57 centos7 sshd[1055]: Server listening on 0.0.0.0 port 22.
Apr 29 07:44:57 centos7 sshd[1055]: Server listening on :: port 22.
Apr 29 07:44:57 centos7 systemd[1]: Started OpenSSH server daemon.
Apr 29 07:51:35 centos7 sshd[1396]: Accepted password for khess from 192.168.1.85 port 56769 ssh2

Mi piace lo stato di systemd a causa dei dettagli forniti. Ad esempio, nell'elenco sopra, vedi il percorso completo del file dell'unità, lo stato, il comando di avvio e le ultime modifiche allo stato.

[ Vuoi provare Red Hat Enterprise Linux? Scaricalo ora gratuitamente. ]

Interrompi un servizio

Interrompere un servizio in esecuzione è facile come avviarne uno.

$ sudo systemctl stop firewalld

Ancora una volta, non vedi alcuna risposta dall'emissione di questo comando. Emetti uno stato del servizio per verificare il tuo successo o fallimento.

Riavvio di un servizio

Se vuoi interrompere e avviare un servizio senza emettere due comandi (gli amministratori di sistema sono un sacco di pigri, dopo tutto), esegui un riavvio.

$ sudo systemctl restart firewalld

Non viene visualizzata alcuna risposta del sistema.

Riavvio, arresto e arresto del sistema

Queste tre attività sono tipiche che gli amministratori di sistema devono conoscere e ora sono sotto il controllo di systemd .

Riavvia

Esistono diversi modi per riavviare i sistemi, ma il vecchio standby, reboot, è in realtà un collegamento al systemctl comando. Presumo che poiché funziona, colleghi il systemctl comando con l'opzione di riavvio aggiunta come segue:

$ sudo systemctl reboot

Lo stesso collegamento vale per l'arresto e per i comandi di spegnimento.

Spegnimento e arresto

Non importa come lo facevi con halt -p o shutdown now o qualsiasi altra cosa, il comando universale ora è:

$ sudo systemctl poweroff

Questo comando spegne il sistema.

Imposta i servizi da eseguire all'avvio

Sei abituato a chkconfig comando per consentire l'esecuzione dei servizi all'avvio e in un particolare runlevel. Bene, anche quei giorni sono passati e sono stati usurpati dall'onnipresente systemctl comando.

Abilitazione di un servizio per l'esecuzione all'avvio

Per impostare l'avvio di qualsiasi servizio all'avvio, emettere il comando seguente. Sto usando firewalld come il servizio di esempio.

$ sudo systemctl enable firewalld

Disabilitazione dell'esecuzione di un servizio all'avvio

Per impedire l'avvio di qualsiasi servizio all'avvio, emettere:

$ sudo systemctl disable firewalld

Il firewalld il servizio non si avvierà all'avvio.

Concludi

Questo breve ma pratico systemd/systemctl la guida di riferimento dovrebbe alleviare un po' il dolore dovuto alla gestione di systemd . Questa è la teoria, almeno. E, come vedrai spesso nei miei articoli o mi sentirai dire ad alta voce:"Sulla carta funziona tutto". Assicurati di farmi sapere su Twitter cosa ne pensi dei miei articoli e anche di suggerire nuovi argomenti.

[ Corso online gratuito:panoramica tecnica di Red Hat Enterprise Linux. ]


Linux
  1. Scrivere file di servizio Systemd di base?

  2. Il servizio Systemd non avvia Nodejs?

  3. Come confezionare un servizio Systemd?

  4. Comandi del servizio di base

  5. riferimento alla riga di comando di systemd (cheat sheet)

Comandi Systemctl per gestire il servizio Systemd

Utilizzo delle funzionalità di systemd per proteggere i servizi

Gestire cgroup con systemd

Linux – Posizione dello script Fsck?

systemd - Dando al mio servizio più argomenti

Come inviare un'e-mail se un servizio systemd viene riavviato?