Guida ai comandi da terminale - Gestione del sistema: differenze tra le versioni
S3v (discussione | contributi) (nuova pagina) |
(Nessuna differenza)
|
Versione delle 16:28, 11 feb 2014
Visualizzare i processi di sistema in uso e le loro dipendenze
Da terminale abbiamo anche la possibilità di avere la panoramica sui processi in uso dal sistema. Il comando che ci occorre è:
ps -e
Potete anche chiedere uno schema strutturato ad albero se volete avere le idee più chiare sui processi aperti; il sistema avrà cura di raggrupparvi in una bella struttura i processi principali in esecuzione, e poi le loro rispettive dipendenze. Il comando da utilizzare è:
pstree
Forzare la chiusura di un processo
Nel caso in cui vi trovaste con un programma andato in crash, che vi consuma RAM e che non accenna a chiudersi con una normale chiusura, potrete forzarne l’uscita. Il comando che serve per farlo da terminale è:
kill processo
Sostituendo naturalmente la voce “processo” con il nome del responsabile del blocco che volete killare.
Visualizzare in ordine cronologico tutti i comandi digitati
Avete notato che sul terminale, premendo il tasto direzionale in su sulla tastiera vedrete il comando lanciato in precedenza? E che più volte cliccate, più comandi precedenti vengono mostrati?
C’è un metodo più comodo che sfrutta questo sistema di ricordo cronologico dei comandi lanciati:
history
Visualizzare le pagine di manuale
Le man page sono documenti che descrivono il funzionamento e la sintassi di programmi, funzioni e particolari file che compongono il sistema operativo. La quasi totalità dei comandi a disposizione hanno la propria man page che può essere visualizzata mediante il comando man, utilizzando la seguente sintassi:
man comando_di_cui_vogliamo_visualizzare_il_manuale
ad esempio per visualizzare la pagina di manuale del comando ls dobbiamo digitare:
man ls
il quale visualizzerà la pagina di manuale che può essere scorsa e letta tranquillamente e comodamente a video. Per uscire dalla visualizzazione della pagina di manuale dobbiamo premere il tasto q
.
Sezioni delle man pages
Come abbiamo detto in precedenza, le pagine di manuale sono una vasta moltitudine (praticamente ogni comando possiede la propria pagina di manuale) e proprio per questo motivo si è scelto di dividere le varie man page in diverse sezioni numerate. Questo sistema è utilizzato in sostanza dalla nascita del sistema operativo GNU/Linux e spesso vi capiterà di incontrare riferimenti a comandi, programmi e anche a funzioni di librerie software assieme al relativo numero di sezione della pagina del manuale come ad esempio man(1). Questa indicazione significa che la documentazione relativa al comando man è inserita all'interno della sezione 1 (comandi utente). Possiamo visualizzare la sezione 1 del manuale per "man" attraverso il comando
man 1 man
Specificare la sezione è utile quando ci troviamo di fronte a casi di argomenti multipli con lo stesso nome. Vediamo qui di seguito quali sono e come sono suddivise le varie sezioni di man:
- Sezione 1 comandi utente (soltanto l'introduzione)
- Sezione 2 chiamate di sistema
- Sezione 3 chiamate delle librerie C
- Sezione 4 dispositivi (es.: hd, sd,)
- Sezione 5 formati dei file e protocolli (es.: wtmp, /etc/passwd, nfs)
- Sezione 6 giochi (introduzione)
- Sezione 7 convenzioni, pacchetti macro, etc. (es.: nroff, ascii)
- Sezione 8 amministrazione di sistema (soltanto l'introduzione)
Modificare la priorità di un processo
nice
è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX[1], che esegue un altro comando modificando il suo valore di nice.
Il valore di nice è un attributo numerico di ciascun processo dei sistemi Unix e Unix-like che è usato dallo scheduler per stabilire quanto tempo di CPU dedicare all'esecuzione del processo. A parità di priorità e di politica di schedulazione, i processi che hanno valori di nice maggiori ottengono in proporzione meno tempo di CPU rispetto a processi che hanno valori di nice minori, e quindi la loro esecuzione procede più lentamente, favorendo gli altri processi. L'idea generale è che un utente si comporti in maniera cortese (la traduzione dalla lingua inglese del termine nice è appunto cortese, simpatico) nei confronti degli altri utenti quando avvia elaborazioni particolarmente lunghe ed intense, avviandole con un valore di nice elevato in modo da non rallentare eccessivamente l'esecuzione dei processi degli altri utenti.
/
nice
è anche il nome di una chiamata di sistema definita dallo standard POSIX che modifica il valore di nice del processo che la invoca. Di fatto il comando nice
opera invocando l'omonima chiamata di sistema. Per diminuire il valore di nice è necessario disporre dei privilegi dell'amministratore (root), mentre ciò non è necessario per aumentarlo. Tipicamente è possibile diminuire il valore di nice fino a 20 unità rispetto al valore predefinito, o aumentarlo fino a 19 unità: è possibile specificare scostamenti più ampi, ma essi sono automaticamente ricondotti entro i limiti sopra citati.
Uso
La sintassi generale di nice è la seguente:
nice [opzioni] [--] comando [arg1 [arg2 …] ]
Il parametro comando
indica il comando da eseguire, ed i parametri facoltativi arg
i suoi parametri.
Il doppio trattino --
(facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.
Tra le opzioni significative vi sono:
-n delta
: somma algebricamente il valore delta al valore di nice, in modo da aumentarlo o diminuirlo; delta può essere negativo, in modo da privilegiare il programma rispetto agli altri, ma in tal caso occorre disporre dei privilegi dell'amministratore (root). Se l'opzione-n
non è specificata, il comportamento predefinito prevede di aggiungere 10 al valore di nice;
Esempi
Avvia parallelamente due copie del programma factor
, ciascuna delle quali calcola i fattori primi del numero 4611686018427387903, misurando il tempo di esecuzione tramite il comando time
: la prima copia viene eseguita con un valore di nice elevato (aumentato di 20 unità rispetto al normale), mentre la seconda usa il valore di nice predefinito. Entrambe le copie impiegano lo stesso tempo di CPU per effettuare il calcolo, ma la prima copia è svantaggiata e (su un sistema con una sola CPU) completa il suo calcolo ben dopo la seconda:
time nice -n 20 factor 4611686018427387903 & time factor 4611686018427387903 &