GNU/Linux >> Linux Esercitazione >  >> Linux

17 comandi Linux che ogni amministratore di sistema dovrebbe conoscere

Alcuni mesi fa, ho chiesto alla community di contributori di Enable Sysadmin di aiutarmi a fare un elenco dei loro comandi più essenziali. Dopo aver elaborato i risultati, 17 dei comandi sono emersi come essenziali o almeno estremamente vantaggiosi per il lavoro di amministratore di sistema di Linux. Quindi, senza ulteriori indugi, entriamo in questi.

Vuoi saperne di più sui comandi di rete? Leggi la prima parte del nostro elenco di comandi crowd-sourced  ]

trova —Questo comando fa parte di findutils e consente comandi di ricerca personalizzati. Ad esempio, se desideri trovare directory che corrispondono a un nome specifico, puoi utilizzare qualcosa del genere:

find path/ -type d -iname '*dir_name*'

Puoi trovare maggiori informazioni sul comando qui.

ls+xargs —Questa coppia era nuova per me; tuttavia, è stato davvero interessante da imparare e ha alcune applicazioni potenzialmente rivoluzionarie. xargs consente di eseguire comandi aggiuntivi rispetto all'output di un determinato comando. Un esempio super semplice di questo può essere visto durante l'abbinamento con ls comando. Ad esempio, se volessi cat tutti i file elencati da ls , potresti usare qualcosa del genere:

$ ls
1.file  2.file  3.file

$ ls | xargs cat
you are reading file 1
you are reading file 2 
you are reading file 3

Dai uno sguardo approfondito a xargs da HowtoGeek
awk/sed/(e)grep —Questo trio è stato nominato più volte di qualsiasi altro comando dalla nostra comunità. È stato illuminante vedere quanto siano davvero importanti questi comandi per la comunità e per gli amministratori di sistema nel loro insieme. Concentriamoci su grep prima.
grep —Grep è fantastico, nessuna bugia. Se non conosci già grep (e siamo onesti, questo è almeno possibile, se sei nuovo nella riga di comando di Linux), familiarizza con esso. grep è uno strumento che ti consentirà di filtrare l'output standard di qualsiasi cosa sulla riga di comando. Puoi grep per le parole che vuoi trovare, o invertilo per mostrarti tutto ciò che NON corrisponde alla tua parola chiave. Parleremo anche un po' di uno strumento molto simile che estende grep un po. Ecco alcuni esempi.
Per mostrarti tutte le righe in un determinato file che includono la parola "errore", ad esempio, dovresti fare qualcosa del genere:

$ cat file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.
Then we have a warning.
and a WARNING
and then of course Warning.

$ grep error file.txt
This line contains an error.
$

Questo è ciò che chiamereste un grep inclusivo . Puoi anche invertirlo usando un flag di esclusione. Supponi di voler vedere tutte le opzioni di configurazione nel tuo sshd config che non sono commentati, puoi farlo:

# grep -v \# /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

… snip ...

Subsystem sftp /usr/libexec/openssh/sftp-server
#

Vale la pena notare che grep fa distinzione tra maiuscole e minuscole, come molte cose in Bash. Quindi grepping per "errore" non troverà "Errore" o "ERRORE". Puoi dire a grep per filtrare senza distinzione tra maiuscole e minuscole utilizzando -i bandiera.

$ grep -i eRRor file.txt
This line contains an error.
This line contains a case sensitive ERROR
And this one is just an Error.

Questo corrisponderà in caso di errore, ERRORE, erRoR o qualsiasi altra cosa, purché le lettere siano le stesse.

Ora, ho detto che potresti usare grep per filtrare l'output di qualsiasi comando giusto? Lo fai con il reindirizzamento dell'output usando una pipe. Questo è davvero utile per cose come filtrare i log, anche live con tail -f .

   # tail -f /var/log/messages | grep -i error

Ci sono molte più opzioni per grep , incluso il filtraggio basato su un file di parole chiave, espressioni regolari, puoi persino colorare l'output. Ti suggerisco di familiarizzare con la pagina man se vuoi saperne di più.

egrep —Ora, cosa succede se si desidera filtrare su più di una parola? Ho sempre usato egrep per questo.

Supponi di voler grep in caso di errore o avviso, potresti fare qualcosa del genere:

$ egrep 'error|warning' file.txt
This line contains an error.
Then we have a warning.

egrep supporterà altri modelli, ne sono sicuro, ma quello proprio lì è quello per cui l'ho sempre usato e l'ho trovato molto utile.

Awk —Il awk Il comando implementa il linguaggio di programmazione AWK per elaborare il testo ed è particolarmente efficace nell'elaborazione dei dati organizzati in colonne. Questo comando è disponibile nella maggior parte se non in tutte le distribuzioni Linux e in qualsiasi altro sistema operativo UNIX.

Gli amministratori di sistema usano comunemente awk per estrarre dati da file o reindirizzare dall'output di altri comandi nella riga di comando o script della shell. Richiama awk eseguendo il comando che fornisce un'azione tra '{}' . Puoi fare riferimento alle colonne come variabili, ad esempio $1 per la prima colonna, $2 , per il secondo e così via. Per impostazione predefinita awk usa gli spazi come separatori di colonne ma puoi usare qualsiasi carattere specificandolo con il flag -F .

Ad esempio, per stampare il proprietario e il gruppo, le colonne 3 e 4 nell'output di ls -l , reindirizza il suo output a awk così:

$ ls -l | awk '{ print $3,$4 }'
ricardo users
ricardo users
root root
...

Puoi anche filtrare le righe dall'input fornendo un'espressione regolare facoltativa prima dell'azione. Ad esempio, per stampare tutti i nomi host (colonna 2) delle righe che iniziano con un numero nel tuo /etc/hosts file, usa awk così:

$ awk '/^[0-9]/ { print $2 }' /etc/hosts
localhost
sat6server
tower01.olab.home.ca
...

awk è un comando versatile che supporta un intero linguaggio di programmazione che ti consente di fare molte cose, come eseguire calcoli, condizionali, trasformazione dei dati e altro. È un'ottima opzione per aiutarti ad automatizzare i tuoi sistemi e spesso fa parte degli script di shell.

Per ulteriori informazioni, consulta l'articolo Una guida per principianti a gawk e il comando man pagine.

sed —Il comando sed —abbreviazione di stream editor — consente di filtrare e modificare flussi di testo in modo programmato. Gli amministratori di sistema usano spesso sed negli script Bash per trasformare il testo inviato tramite pipe da altri comandi o direttamente da file. Nella sua forma più semplice, sed cerca e sostituisce il testo. Ad esempio, usalo per sostituire la stringa "stream" con "text" proveniente da una pipe, come questa:

$ echo "This is a test stream" | sed 's/stream/text/'
This is a test text

Puoi anche sostituire il testo in un file fornendo il nome del file come ultimo parametro, in questo modo:

$ sed 's/pattern/replacement/' filename

Per sicurezza, sed restituisce i risultati a STDOUT senza modificare il file. È possibile reindirizzare l'output a un nuovo file per salvare i risultati. Puoi anche modificare il file originale in atto fornendo -i bandiera.

Per impostazione predefinita, sed cambia solo la prima occorrenza del motivo in ogni riga. Per modificare questo comportamento, consentendo di sostituire tutte le istanze del pattern, fornisci il g opzione alla fine di sed espressione di comando, come questa:

$ sed 's/pattern/replacement/g' filename

Oltre alla ricerca di testo di base, sed supporta la corrispondenza delle espressioni regolari. Ad esempio, utilizza un'espressione regolare "[Ww]ord" per sostituire sia "Word" che "word" in ogni riga:

$ echo "Word word WORD" | sed 's/[Ww]ord/text/g'
text text WORD

Questo comando offre molte altre possibilità ma anche con questo utilizzo di base, puoi risparmiare molto tempo. Per ulteriori informazioni su altre opzioni, consulta man pagine per sed .

guarda —Questo comando consente di eseguire ripetutamente un comando/programma utilizzando un determinato intervallo. Per impostazione predefinita, l'intervallo è ogni due secondi. Molti amministratori di sistema utilizzano questo comando per monitorare varie condizioni o attività del sistema fino al completamento.
Ad esempio, se desideri monitorare l'utilizzo della memoria, puoi utilizzare quanto segue: watch -d free -m (il -d l'opzione evidenzia valori diversi dall'ultima esecuzione).

ricciolo —Questo comando consente di trasferire dati da/verso i server, con molte più opzioni rispetto al solo HTTP/HTTPS. Funziona senza l'interazione dell'utente ed è molto frequente in situazioni in cui è necessario effettuare chiamate API REST (GET, POST, PUT).

curl supporta molte opzioni per connettersi ai server, come SSL, utilizzare i cookie, riprendere il trasferimento di file, ecc. È quasi come se avessi un browser web che puoi eseguire dalla riga di comando.

L'esempio seguente mostra curl per un semplice download di file, ma limitando la larghezza di banda:

curl -o myfile.tar.gz --limit-rate 20K https://myserver.example.com/bigfile.tar.gz

Come indica il manuale, il numero di opzioni disponibili per l'uso con curl sono molti. Alcuni di quelli che uso frequentemente sono:

  •  -s: esegui in modalità silenziosa (senza barra di avanzamento)
  •  -k: consentire una connessione non sicura (solo quando ci si connette a un server interno noto per il quale viene utilizzato un certificato autofirmato)
curl -X POST --header "Content-Type: application/json" \
             --data '{"my_id": 5, "my_application": "moneymaker", "body": "showmethemoney"}' \
               https://myserver.example.com/posts

Nell'esempio sopra, sto eseguendo un POST e passando l'intestazione e il corpo .

posta —La mail command è uno strumento super pulito che consente a un utente di inviare e-mail direttamente dalla riga di comando, senza dover aprire un browser o un client dedicato. Avrai bisogno di un server SMTP in esecuzione localmente sulla tua macchina, quindi è qualcosa di cui essere a conoscenza.

Installa il pacchetto:

 $ apt-get install mailutils

Per inviare un'e-mail di base, puoi utilizzare quanto segue:

$ mail -s "Subject Line" [email protected]

Quando premi Invio , ti verrà chiesto con il Cc campo. Puoi aggiungere altri destinatari o semplicemente premere Invio saltare. Quindi digiterai il tuo messaggio. Al termine, usa Ctrl+D per inviare il messaggio per la consegna. Al termine dovrebbe apparire così:

$ mail -s "Subject Line" [email protected]
Cc: [email protected]
"Hello world" 
<Ctrl + D>

Per ulteriori informazioni su questo comando, dai un'occhiata a questo fantastico articolo.

Tmx —Il tmux il comando, che è il multiplexer del terminale, consente più finestre all'interno di una singola finestra del terminale. Puoi passare da una finestra all'altra e persino dividerle in singoli riquadri, ognuno con la propria CLI. Abbiamo alcuni ottimi contenuti pubblicati su tmux e come usarlo, quindi ti lascio un link a quel contenuto. Dai un'occhiata ai suggerimenti per l'utilizzo di tmux per ulteriori informazioni.

sudo —Il comando sudo è il tuo percorso verso privilegi elevati. Tutti gli amministratori di sistema devono sapere come utilizzare questo comando, in che modo è diverso da su (che molti usano al posto di sudo …cattiva idea) e come garantire l'accesso agli account necessari. Ho scritto un articolo introduttivo a sudo indietro quando potresti trovarlo utile.

ssh —Il ssh Il comando (secure shell) consente di utilizzare i protocolli di lavoro remoto per accedere e manipolare i server tramite una connessione di rete. Se hai mai lavorato nel supporto o sei stato aiutato dal supporto per quella materia, molte volte il tecnico di supporto usa ssh per accedere al tuo computer o server.
L'utilizzo dei comandi è piuttosto semplice:

$ ssh username@hostname

Ti verrà richiesta una password e, se puoi fornire le credenziali corrette, sarai sulla buona strada nel sistema desiderato.

scp —Il comando di copia sicura (scp ) consente a un utente di copiare file su/da un sistema remoto. Avrai bisogno di ssh abilitato su entrambe le estremità della transazione e una corretta sintassi dei comandi. Tutto questo e dovresti essere a posto. La sintassi dei comandi dovrebbe essere simile a questa:

Per copiare un file DA un sistema remoto nella directory di lavoro corrente:

scp user@ip_of_remote :/file/path/of/file.txt . 

pkill —Questa utilità di comando ci consente di segnalare i processi di esecuzione dei programmi. Puoi cercare un processo per nome (completo o parziale), utente, ecc. Ci sono tantissime opzioni per usare questa utilità, tuttavia, per impostazione predefinita, il comando invia il segnale 15 (TERM) a tutti i PIDS che corrispondono ai tuoi criteri. Ad esempio:

$ pkill chrome

Questo dovrebbe arrestare tutte le istanze di Chrome in esecuzione sulla macchina.

lsns —Questo comando, elenca gli spazi dei nomi (lsns ), fa esattamente quello che dice:elenca gli spazi dei nomi. Pazzo vero? Ad ogni modo, ci sono molte opzioni che puoi aggiungere qui: -J (formato json), -l (formato elenco), -n (nessuna intestazione), ecc. Questo comando fa parte di util-linux pacchetto ed è ampiamente disponibile. Per ulteriori informazioni su lsns o spazi dei nomi in generale, dai un'occhiata a questo articolo del collaboratore Steve Ovens I 7 spazi dei nomi Linux più utilizzati.

annulla condivisione —Anche questo è incentrato sugli spazi dei nomi. Il comando unshare esegue un programma in uno o più spazi dei nomi appena creati. Per impostazione predefinita, il nuovo spazio dei nomi durerà solo finché contiene programmi in esecuzione. Per ulteriori informazioni su questo comando, controlla man pagina nella tua macchina Linux preferita.

[ Vuoi testare le tue capacità di amministratore di sistema? Fai una valutazione delle abilità oggi. ]

Se riesci a incorporare questi strumenti nel tuo flusso di lavoro dove hanno senso, sarai un amministratore di sistema migliore per farlo. Se alcuni dei tuoi comandi preferiti non sono stati inseriti nell'elenco, ci piacerebbe conoscerli. Sentiti libero di inviare un articolo sul tuo comando preferito che non abbiamo elencato a [email protected].


Linux
  1. 20 comandi Linux essenziali per ogni utente

  2. Statistiche di sistema:comandi stat di Linux da sapere

  3. 3 abilità che ogni amministratore di sistema Linux dovrebbe portare in tavola

  4. 6 Opzioni di comando OpenSSL che ogni amministratore di sistema dovrebbe conoscere

  5. 7 comandi di rete Linux che ogni amministratore di sistema dovrebbe conoscere

Comandi di rete Linux di base che dovresti conoscere

5 comandi Linux che ogni utente Linux dovrebbe conoscere

21 comandi essenziali che ogni utente Docker dovrebbe conoscere

5 semplici trucchi per la cronologia di Bash che ogni utente Linux dovrebbe conoscere

Trucchi del terminale Linux che ogni appassionato di Linux deve conoscere!

Comandi Linux che tutti gli utenti dovrebbero conoscere {Ultimate List}