Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Comandi Linux da amministratore di sistema

Dieci comandi linux da terminale che possono tornare utili a chi vuole tenere sotto controllo il proprio sistema.
Dieci comandi linux da terminale che possono tornare utili a chi vuole tenere sotto controllo il proprio sistema.
Link copiato negli appunti

Uno degli aspetti più importanti nella gestione di un computer basato su una distribuzione GNU/Linux è l'amministrazione del sistema operativo: eseguire operazioni di manutenzione e controllo delle periferiche, dei processi e delle memorie risulta essere di fondamentale importanza per garantire un corretto funzionamento della macchina. In questo articolo analizzeremo 10 dei più importanti comandi linux da terminale per amministratori di sistema.

Monitorare le risorse dei processi: top

I processi avviati costituiscono un fattore cruciale nell'economia di un sistema operativo: non accorgersi di alcuni problemi legati ad un determinato processo può avere come conseguenza un drastico aumento delle risorse necessarie al suo funzionamento, con conseguente calo delle prestazioni. Un utile comando che permette di avere sempre sotto controllo i processi eseguiti all'interno di una distribuzione Linux è top. Lanciandolo da riga di comando si da la possibilità al terminale di trasformarsi in un vero e proprio monitor in tempo reale che mostra numerose informazioni in merito ai processi gestiti dal Kernel: ad intervalli regolari l'applicazione esegue l'aggiornamento automatico dei dati mostrati, ordinati secondo un criterio basato sul consumo di risorse.

Figura 1: Comando top
(clic per ingrandire)

Come la maggior parte dei comandi per il terminale, anche top permette di essere eseguito in combinazione con alcuni parametri che offrono la possibilità di personalizzarne alcuni aspetti in base alle proprie esigenze. Alcuni dei parametri più utili di top sono:

  • -d secondi.decimi: il parametro -d permette di modificare l'intervallo di tempo di aggiornamento della schermata. Il valore passato deve seguire il formato decimi.secondi;
  • -u utente: utile per monitorare i processi relativi ad un determinato utente;
  • -p PID1 PID2 ...: permette di controllare solo determinati processi, il cui PID deve essere specificato come valore del parametro (per conoscere il PID di un processo è possibile leggere la seconda colonna dell'output ricevuto tramite il comando ps -aux).

Informazioni di sistema: uname

Il comando uname permette di conoscere in maniera rapida e comoda alcune informazioni riguardanti la macchina ed il sistema operativo in uso, senza dover ricorrere a particolari menù negli strumenti presenti in ogni ambiente desktop. A seconda del parametro con cui è eseguito, uname offre la possibilità di conoscere specifici dettagli: Kernel in uso, distribuzione utilizzata, tipologia di hardware, informazioni sul processore e così via. Alcuni dei paramettri supportati sono i seguenti:

  • -a: mostra tutte le informazioni disponibili sul sistema;
  • -s: mostra il nome del Kernel in uso;
  • -r: mostra la release del Kernel in uso;
  • -p: mostra il tipo di processore utilizzato;
  • -i: mostra informazioni sulla piattaforma hardware;
  • -o: mostra il sistema operativo in uso;
  • -n: mostra l'hostname del computer sulla rete;
  • -m: mostra il nome dell'hardware utilizzato dalla macchina.
Figura 2: Comando uname
(clic per ingrandire)

Questo comando non necessita di particolari privilegi per essere eseguito ed il suo output risulta essere piuttosto essenziale, limitandosi a fornire lo stretto necessario in merito alle informazioni richieste. Nel caso in cui non siano disponibili alcuni dati, come il tipo di processore utilizzato o le informazioni sulla piattaforma hardware a causa dell'impossibilità di individuare tali dettagli, uname mostrerà come uscita il valore unknown.

Memoria libera: free

La RAM costituisce uno degli elementi essenziali nell'architettura di un calcolatore: la saturazione della memoria può compromettere la stabilità e l'efficienza di una qualunque macchina. Per tale motivo, durante l'utilizzo intensivo di software bisognosi di ingenti risorse è buona prassi tenere sotto controllo lo spazio disponibile in RAM: per farlo è possibile utilizzare il comando free, che offre inoltre dettagli sulla memoria libera nella partizione di swap, utilizzata come supplemento alla memoria RAM disponibile sul computer.

Figura 3: Comando free
(clic per ingrandire)

Tra i parametri di maggiore interesse figurano:

  • -b: permette di ricevere l'output in termini di byte;
  • -k: come il parametro precedente, con la differenza che offre l'output in KByte;
  • -l: mostra dettagliatamente lo stato della memoria;
  • -t: aggiunge due righe all'output, nelle quali vengono visualizzati i totali di ogni colonna;
  • -s secondi: seguito da un valore numerico, il parametro -s permette di ricevere ad intervalli regolari informazioni sulla memoria, senza la necessità di lanciare manualmente il comando ogni qual volta si necessita di conoscere tali informazioni.

Spazio libero: df

Se free permette di controllare la quantità di memoria RAM disponibile, il comando df permette di eseguire un'operazione simile sui dispositivi di archiviazione: il suo scopo è infatti quelli di fornire informazioni sullo stato dell'hard disk del computer in uso e di ogni altro file system montato (pen drive, hard disk esterni e qualsiasi altra periferica esterna montata). Il comando df può essere eseguito sia senza alcun dispositivo target che seguito dal percorso di determinati file system: nel primo caso mostra lo spazio libero su ogni file system montato, nel secondo invece si limita a quelli selezionati manualmente.

Figura 4: Comando df
(clic per ingrandire)

I principali parametri supportati sono:

  • -B: seguito da un valore numerico permette di specificare le dimesioni da utilizzare per i blocchi;
  • -h: offre un output più semplice da leggere, con valori in Kilobyte, Megabyte o Gigabyte;
  • -H: permette di utilizzare un conteggio con le potenze di 10 e non di 2;
  • -l: limita il controllo ai file system locali;
  • -T: mostra anche il tipo di file system montato;
  • -x: seguito dal percorso ov'è montato un file system, lo esclude dal controllo.

Monitorare il Kernel: dmesg

dmesg, abbreviativo di display message, è un comando che permette di ricevere i messaggi provenienti direttamente dal Kernel. In particolare, dmesg fornisce i messaggi contenuti all'interno del buffer del Kernel, e non ancora scritti sul file system. Il suo utilizzo può essere molto utile per ricevere, ad esempio, informazioni su un dispositivo appena collegato,o anche sulle componenti hardware già connesse che comunicano con il Kernel. Le funzionalità di dmesg non si fermano però qui: le prime righe dell'output di questo comando, infatti, contengono informazioni sul sistema operativo, sul Kernel utilizzato, sulla memoria RAM disponibile e così via. Il suo utilizzo non prevede l'inserimento di alcun parametro, per cui è possibile lanciare direttamente

$ dmesg

per ricevere l'output desiderato.

Figura 5: Comando dmesg
(clic per ingrandire)

Tale comando, però, produce una lunga serie di informazioni, che possono rendere difficoltosa la ricerca di una riga in particolare. Per questo motivo, è possibile utilizzare dmesg in combinazione con less

$ dmesg | less

per ricevere le informazioni una riga alla volta, tramite la pressione del pulsante di Invio. L'output restituito da dmesg può anche essere reindirizzato verso un file di testo, disponibile successivamente per eventuali ricerche:

$ dmesg > file_di_output

È possibile inoltre filtrare le informazioni fornite da tale comando, scegliendo quali ricevere: ad esempio, per controllare cosa accade relativamente alle porte USB possiamo digitare

$ dmesg | grep -i usb

Montare file system: mount

Il comando mount permette di montare un dispositivo o una partizione in un determinato percorso, per potervi accedere in lettura e scrittura per utilizzare i file ivi localizzati o aggiungerne di nuovi. Lo stesso comando, con appositi parametri, permette di visualizzare l'elenco di tutti i file system montati con alcune informazioni utili a riconoscere il percorso di montaggio e altri dettagli. Per montare un determinato dispositivo all'interno di una directory il comando generale è il seguente:

$ mount -t FILE_SYSTEM /percorso/dispositivo /percorso/di/montaggio

dove al posto di FILE_SYSTEM va inserito il tipo di file system con cui è stato formattato. Se si vuole ad esempio montare in /mount/disco una partizione ext4 localizzata in /dev/sda2, il comando da lanciare il seguente:

$ mount -t ext4 /dev/sda2 /mount/disco
Figura 6: Comando mount
(clic per ingrandire)

Per poter eseguire tale comando è necessario possedere i privilegi di ammnistratore (utente root) e che la directory ove montare la partizione sia già stata creata e sia scrivibile. La lista di partizioni e dispositivi montati è disponibile tramite il parametro -l, che permette di ricevere informazioni anche sulla directory in cui ciascun file system è montato, la sua tipologia ed altri dettagli.

Gestione degli utenti: w

Un altro aspetto importante da tenere sotto controllo è la gestione degli utenti: ogni distribuzione GNU/Linux permette infatti di creare più utenti, ciascuno dei quali provvisto di una propria cartella home, di una propria configurazione di sistema e di altri parametri personalizzati. Più utenti possono essere loggati allo stesso computer contemporaneamente, per cui è possibile controllare quali utenti sono collegati e quali sono le operazioni ed i processi ad essi associati in ogni momento. Per fare ciò è disponibile il comando w, che si rivela in molti casi indispensabile nell'amministrare un computer cui hanno accesso più persone, ciascuna con un proprio account.

Figura 7: Comando w
(clic per ingrandire)

L'output del comando w si presenta composto da diverse colonne, dominate ciascuna da un'intestazione che ne esplica il contenuto. Eseguendo il comando senza alcun parametro aggiuntivo si visualizza l'elenco completo delle informazioni disponibili tramite tale istruzione, mentre per modificarne il comportamento sono disponibili alcuni parametri da aggiungere al comando come:

  • -h: elimina la riga di instestazione nell'output visivo;
  • -s: mostra un elenco breve delle informazioni disponibili;
  • -u: ignora l'UID dei processi.

Visualizzare i processi attivi: ps

Il comando ps permette di avere una panoramica generale sui processi attivi all'interno del sistema, con relativo PID e altre informazioni utili per identificare ogni singolo processo e ottenere maggiori informazioni su di essi. Una delle principali caratteristiche di ps è la possibilità di passare a tale comandi parametri in formato UNIX, BSD o GNU, a seconda del numero di trattini presenti prima di ogni parametro. In questo modo, è possibile filtrare i processi che tale comando restituirà come output: ad esempio, per ricevere l'elenco di tutti i processi attivi, possono essere utilizzati i seguenti parametri

$ ps aux
$ ps -ef

che in sostanza producono lo stesso output.

Figura 8: Comando ps
(clic per ingrandire)

Per filtrare i processi a seconda degli utenti, è possibile specificare il nome dell'utente nel seguente modo

$ ps aux | grep -i utente

L'output sarà organizzato in colonne, con la prima riga che indica l'etichetta di ognuna. Le informazioni che vengono restituite quando si fornisce il parametro aux sono l'utente, il PID del processo, la CPU e la RAM che il processo occupa, la porta eventualmente utilizzata, l'orario di avvio ed altre utili informazioni.

Cercare file: find

La riga di comando si propone come soluzione ottimale anche per la ricerca di file. Tramite il comando find, infatti, è possibile dare il via a ricerche in molti casi più dettagliate di quelle effettuate tramite strumenti grafici, il più delle volte privi di numerose ma interessanti opzioni. Il suo utilizzo è piuttosto semplice: al comando file va aggiunto il percorso all'interno del quale effettuare la ricerca ed nome del file da cercare preceduto dal parametro -name, con una serie di eventuali parametri aggiuntivi utili a specificare meglio alcune caratteristiche dei risultati da visualizzare.

Figura 9: Comando find
(clic per ingrandire)

Tra questi, i più importanti risultano essere:

  • -size: per specificare le dimensioni massime dei file restituiti tra i risultati. Le dimensioni fornite come parametro di ricerca devono terminate con una lettera che ne indica l'unità di misura: b per byte, k per Kilobyte e così via (ad esempio, 500b indica 500 byte);
  • -cmin: indica un arco temporale nel quale deve essere stato modificato ogni file mostrato tra i risultati;
  • -user: per cercare tra i file posseduti da uno specifico utente;
  • -type: per concentrare la ricerca su determinati tipi di file. Al parametro deve seguire una lettera che indica la tipologia di file da cercare: d per le directory, c per i file testuali, l per link simbolici.

Programmare operazioni: cron

Per quanto sia possibile eseguire manualmente operazioni di manutenzione del proprio sistema operativo Linux, può risultare comodo impostare un qualche strumento in modo tale che determinate operazioni vengano eseguite automaticamente, ad intervalli regolari, senza la necessità di dover intervenire ogni qual volta ce ne sia bisogno. Uno di questi strumenti è cron, un pacchetto disponibile per tutte le principali distribuzioni e preinstallato in numerosi casi. Più che uno specifico comando, cron è un'applicazione che utilizza alcune cartelle predefinite nelle quali vanno inseriti gli script che si vuole eseguire secondo determinati schemi temporali.

Le directory utilizzate sono:

/etc/cron.hourly: per gli script da eseguire ogni ora;
/etc/cron.daily: per gli script da eseguire ogni giorno;
/etc/cron.weekly: per gli script da eseguire ogni settimana;
/etc/cron.weekly: per gli script da eseguire ogni mese.
Figura 10: Comando cron
(clic per ingrandire)

Ciascuno script può contenere una singola istruzione oppure un set di comandi per ottenere l'obiettivo desiderato. Nel caso in cui si voglia personalizzare ulteriormente l'esecuzione automatica di uno script o di un comando è possibile utilizzare il file /etc/crontab, aggiungendo una riga per ogni comando da aggiungere all'elenco, secondo il seguente pattern:

mm hh gg MM GG user comando

dove:

  • mm: indica il minuto di esecuzione, ed è un valore numerico compreso tra 0 e 59;
  • hh: indica l'ora di esecuzione, ed è un valore numero compreso tra 0 e 23;
  • gg: indica il giorno di esecuzione, ed è un valore numerico compreso tra 1 e 31;
  • MM: indica il mese di esecuzione, ed è un valore numerico compreso tra 1 e 12;
  • GG: indica il giorno della settimana in cui verrà eseguito il comando, ed è un valore numerico compreso tra 0 e 6, dove 0 indica la Domenica, 1 il Lunedì fino 6 che indica il Sabato;
  • user: l'utente con cui verrà lanciato il comando;
  • comando: il comando da eseguire.

Ti consigliamo anche