Introduzione
In questo articolo discuteremo i comandi più comuni con esempi che vengono utilizzati nel monitoraggio dei processi nei sistemi Linux come :
- ps
- in alto
- top
- lsof
1. ps
Come tutti sappiamo, Linux è un sistema multitasking e multiutente. Quindi, consente a più processi di operare contemporaneamente senza interferire tra loro. Il processo è uno dei concetti fondamentali importanti del sistema operativo Linux. Un processo è un'istanza in esecuzione di un programma e svolge diverse attività all'interno del sistema operativo.
Linux ci fornisce un'utilità chiamata ps per visualizzare le informazioni relative ai processi su un sistema che sta come abbreviazione di "Stato del processo". Il comando ps viene utilizzato per elencare i processi attualmente in esecuzione e i relativi PID insieme ad altre informazioni che dipendono da diverse opzioni. Legge le informazioni sul processo dai file virtuali in /proc file system. /proc contiene file virtuali, questo è il motivo per cui viene definito un file system virtuale.
ps offre numerose opzioni per manipolare l'output in base alle nostre esigenze.
Sintassi :
ps [options]
Opzioni per il comando ps:
1- Selezione del processo semplice:
Mostra i processi per la shell corrente
Il risultato contiene quattro colonne di informazioni.
In cui si,
PID – l'ID processo univoco
TTY – tipo di terminale a cui l'utente ha effettuato l'accesso
TEMPO – quantità di CPU in minuti e secondi di esecuzione del processo
CMD – nome del comando che ha avviato il processo.
Nota – A volte quando eseguiamo ps comando, mostra ORA come 00:00:00. Non è altro che il tempo totale di utilizzo della CPU accumulato per qualsiasi processo e 00:00:00 indica che il kernel non ha fornito tempo di CPU fino ad ora. Nell'esempio precedente abbiamo scoperto che, per bash, non è stato assegnato alcun tempo di CPU. Questo perché bash è solo un processo padre per diversi processi che necessitano di bash per la loro esecuzione e bash stesso non utilizza tempo di CPU fino ad ora.
2. Visualizza processi :
Visualizza tutti i processi in esecuzione, utilizza una delle seguenti opzioni con ps –
# ps -A
# ps -e
3. Visualizza processi non associati a un terminale :
Visualizza tutti i processi tranne sia i leader di sessione che i processi non associati a un terminale.
# ps -a
Nota – Potresti pensare che cos'è il leader di sessione? Una sessione univoca viene assegnata a ogni gruppo di processi. Quindi, il leader di sessione è un processo che dà il via ad altri processi. L'ID di processo del primo processo di qualsiasi sessione è simile all'ID di sessione.
4. Visualizza tutti i processi tranne i leader di sessione:
# ps -d
5. Visualizza tutti i processi tranne quelli che soddisfano le condizioni specificate (nega la selezione) :
Esempio – Se vuoi vedere solo il leader di sessione e i processi non associati a un terminale. Quindi, esegui
# ps -a -N
or
# ps -a --deselect
6. Visualizza tutti i processi associati a questo terminale :
# ps -T
7. Visualizza tutti i processi in esecuzione :
# ps -r
8. Visualizza tutti i processi di tua proprietà : Processi ovvero lo stesso EUID di ps che significa corridore del comando ps, root in questo caso
# ps -x
Selezione del processo per elenco
Qui discuteremo come ottenere l'elenco dei processi specifici con l'aiuto del comando ps. Queste opzioni accettano un singolo argomento sotto forma di un elenco separato da spazi vuoti o da virgole. Possono essere utilizzati più volte.
Ad esempio: ps -p “1 2” -p 3,4
- Seleziona il processo in base al nome del comando. Questo seleziona i processi il cui nome eseguibile è fornito in cmdlist. Potrebbe esserci la possibilità che tu non conosca l'ID del processo e con questo comando è più facile cercare.
Sintassi : ps -C nome_comando
Esempio :
[root@unixcop ~]# ps -C dhclient
PID TTY TIME CMD
19815 ? 00:00:00 dhclient
2. Selezionare per ID o nome del gruppo. L'ID gruppo identifica il gruppo dell'utente che ha creato il processo.
Syntax : ps -G group_name
ps --Group group_name
Example :
[root@unixcop ~]# ps -G root
3. Visualizza per ID gruppo :
Syntax : ps -g group_id ps -group group_id
Ora esempio :
# ps -g 1
4. Visualizza il processo per ID processo.
-Syntax : ps p process_id ps -p process_id ps --pid process_id
Ed esempi:
[root@unixcop ~]# ps p 27223
PID TTY STAT TIME COMMAND
27223 ? Ss 0:01 sshd: root@pts/2
[root@unixcop ~]# ps -p 27223
PID TTY TIME CMD
27223 ? 00:00:01 sshd
[root@unixcop ~]# ps --pid 27223
PID TTY TIME CMD
27223 ? 00:00:01 sshd
È possibile visualizzare più processi specificando più ID processo separati da spazi vuoti o virgole –
–Per Esempio :
[root@unixcop ~]# ps -p 1 904 27223
PID TTY STAT TIME COMMAND
1 ? Ss 0:13 /usr/lib/systemd/systemd --switched-root --system --d
904 tty1 Ssl+ 1:02 /usr/bin/X -core -noreset :0 -seat seat0 -auth /var/r
27223 ? Ss 0:01 sshd: root@pts/2
Qui abbiamo menzionato tre ID di processo:1, 904 e 27223 separati da uno spazio vuoto.
5. Selezionare per ID processo padre. Utilizzando questo comando possiamo visualizzare tutti i processi di proprietà del processo padre eccetto il processo padre.
Esempi :
[root@unixcop ~]# ps -p 766
PID TTY TIME CMD
766 ? 00:00:06 NetworkManager
[root@unixcop ~]# ps --ppid 766
PID TTY TIME CMD
19815 ? 00:00:00 dhclient
Nell'esempio sopra ID processo 766 è assegnato a NetworkManager e questo è il processo padre per dhclient con ID processo 19815.
6. Visualizza tutti i processi appartenenti a qualsiasi ID di sessione.
Syntax :
ps -s session_id
ps --sid session_id
Example :
[root@unixcop ~]# ps -s 1248
PID TTY TIME CMD
1248 ? 00:00:00 dbus-daemon
1276 ? 00:00:00 dconf-service
1302 ? 00:00:00 gvfsd
1310 ? 00:00:00 gvfsd-fuse
1369 ? 00:00:00 gvfs-udisks2-vo
1400 ? 00:00:00 gvfsd-trash
1418 ? 00:00:00 gvfs-mtp-volume
1432 ? 00:00:00 gvfs-gphoto2-vo
1437 ? 00:00:00 gvfs-afc-volume
1447 ? 00:00:00 wnck-applet
1453 ? 00:00:00 notification-ar
1454 ? 00:00:02 clock-applet
7. Seleziona per tty. Questo seleziona i processi associati al menzionato tty :
The Syntax : ps t tty ps -t tty ps --tty tty
Ad esempio :
# ps -t pts/0
8. Selezionare in base all'ID utente o al nome effettivo.
E la sintassi è :
ps U nome_utente/ID
ps -U nome_utente/ID
Controllo del formato di output
Queste opzioni vengono utilizzate per scegliere le informazioni visualizzate da ps. Ci sono più opzioni per controllare il formato di output. Queste opzioni possono essere combinate con qualsiasi altra opzione come e, u, p, G, g ecc, dipende dalle nostre necessità.
1. Usa -f per visualizzare l'elenco in formato completo.
ps -af
2. Usa -F per visualizzare Formato extra completo.
ps -F
3. Per visualizzare il processo in base al formato definito dall'utente.
# ps --formate column_name
# ps -o column_name
# ps o column_name
Esempio :
ps -aN --format cmd,pid,user,ppid
In questo esempio desidero vedere comando, ID processo, nome utente e ID processo padre, quindi passo rispettivamente gli argomenti cmd, pid, user e ppid.
4. Visualizza nel formato di controllo dei lavori BSD:
ps -j
5. Visualizza il formato lungo BSD:
ps l
6. Aggiungi una colonna di dati di sicurezza.
ps -aM
7. Visualizza comando con formato segnale.
[root@unixcop ~]# ps s 766
8. Visualizza il formato orientato all'utente
ps u 1
9. Visualizza il formato della memoria virtuale
ps v 1
10. Se vuoi vedere l'ambiente di qualsiasi comando. Quindi usa l'opzione **e** –
[root@unixcop ~]# ps ev 766
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
766 ? Ssl 0:08 47 2441 545694 10448 1.0 /usr/sbin/NetworkManager --no-daemon LANG=en_US.UTF-8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
11. Visualizza i processi che utilizzano la memoria più alta.
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem
12. stampa un albero di processo
[root@unixcop ~]# ps --forest -C sshd
PID TTY TIME CMD
797 ? 00:00:00 sshd
11680 ? 00:00:03 \_ sshd
16361 ? 00:00:02 \_ sshd
13. Elenca tutti i thread per un particolare processo. Usa -T o -L opzione per visualizzare i thread di un processo.
[root@unixcop ~]# ps -C sshd -L
PID LWP TTY TIME CMD
797 797 ? 00:00:00 sshd
11680 11680 ? 00:00:03 sshd
16361 16361 ? 00:00:02 sshd
Nota – Per la spiegazione dei diversi contenuti delle colonne, fare riferimento alla pagina man.
Riferimento : Pagina man
2. in alto
in alto comando viene utilizzato per mostrare i processi Linux. Fornisce una visualizzazione dinamica in tempo reale del sistema in esecuzione. Solitamente, questo comando mostra le informazioni di riepilogo del sistema e l'elenco dei processi o thread che sono attualmente gestiti dal kernel Linux.
Non appena eseguirai questo comando, si aprirà una modalità di comando interattiva in cui la metà superiore conterrà le statistiche dei processi e dell'utilizzo delle risorse. E la metà inferiore contiene un elenco dei processi attualmente in esecuzione. Premendo q uscirà semplicemente dalla modalità di comando.
Sintassi :
top
Qui,
- PID: Mostra l'ID processo univoco dell'attività.
- PR: Indica la priorità del compito.
- SHR: Rappresenta la quantità di memoria condivisa utilizzata da un'attività.
- VIRT: Memoria virtuale totale utilizzata dall'attività.
- UTENTE: Nome utente del proprietario dell'attività.
- %CPU: Rappresenta l'utilizzo della CPU.
- TEMPO+: Tempo CPU, lo stesso di "TIME", ma riflette una maggiore granularità attraverso i centesimi di secondo.
- SHR: Rappresenta la dimensione della memoria condivisa (kb) utilizzata da un'attività.
- NI: Rappresenta un bel valore di attività. Un valore Nice negativo implica una priorità più alta e un valore Nice positivo significa una priorità inferiore.
- %MEM: Mostra l'utilizzo della memoria dell'attività.
Esempi:
1) Esci dal comando superiore dopo una specifica ripetizione: L'output superiore continua ad aggiornare finché non premi "q". Con il comando in basso il comando in alto uscirà automaticamente dopo 20 ripetizioni.
top -n 10
2) Visualizza il processo utente specifico
top -u unixcop
qui l'utente ha chiamato unixcop
3) Evidenzia Processo in esecuzione in alto: Premi 'z' l'opzione in esecuzione del comando superiore visualizzerà il processo in esecuzione a colori che potrebbe aiutarti a identificare facilmente il processo in esecuzione
4) Mostra il percorso assoluto dei processi:
Premi 'c' opzione nell'esecuzione del comando top, visualizzerà il percorso assoluto di esecuzione di pro
5) Termina il processo in esecuzione: Puoi terminare un processo dopo aver trovato il PID del processo premendo 'k' opzione nell'esecuzione del comando top senza uscire dalla finestra in alto come mostrato di seguito.
6) Ordina per Utilizzo CPU: Premi (Maiusc+P) per ordinare i processi in base all'utilizzo della CPU.
7) Mostra la sintassi dei comandi in alto:
top -h
8) Modalità batch: Invia l'output dall'alto a un file o a qualsiasi altro programma.
top -b
9) Modalità sicura: Usa la parte superiore in modalità protetta.
top -s
10) Riga di comando: Il comando seguente inizia in alto con l'ultimo stato chiuso.
Top -c
11) Tempo di ritardo: Indica il tempo di ritardo tra gli aggiornamenti dello schermo.
top -d seconds.tenths
3. htop
top command nel sistema Linux è un'utilità della riga di comando che consente all'utente di monitorare in modo interattivo le risorse vitali del sistema o i processi del server in tempo reale. top è un programma più recente rispetto a top comando e offre molti miglioramenti rispetto al comando superiore. htop supporta il funzionamento del mouse, utilizza il colore nel suo output e fornisce indicazioni visive sull'utilizzo del processore, della memoria e dello scambio. htop stampa anche le righe di comando complete per i processi e consente di scorrere sia verticalmente che orizzontalmente rispettivamente per i processi e le righe di comando.
Sintassi:
htop [-dChusv]
Esempio:
Opzioni:
- -d –ritardo : Utilizzato per mostrare il ritardo tra gli aggiornamenti, in decimi di secondo.
- -C –nessun colore –nessun colore :Avvia htop in modalità monocromatica.
- -h –aiuto : Utilizzato per visualizzare il messaggio di aiuto ed uscire.
- -u –user=USERNAME : Utilizzato per mostrare solo i processi di un determinato utente.
htop -u qadry
- -p –pid=PID, PID… : Utilizzato per mostrare solo i PID forniti.
- -s –sort-key COLUMN : Ordina per questa colonna (usa la guida –sort-key per un elenco di colonne).
- -V –versione : Genera informazioni sulla versione ed esci.
Comandi interattivi:
- Frecce, Pagina su, Pagina giù, Home, Fine :Scorri l'elenco dei processi.
- Spazio :tagga o annulla il tag di un processo.
- U – Deseleziona tutti i processi (rimuovi tutti i tag aggiunti con la barra spaziatrice).
- s – Traccia le chiamate di sistema del processo.
- F1 – Aiuto
- F2 – configurazione
- F3 – cerca
- F4 – filtering:digita una parte della riga di comando di un processo e verranno mostrati solo i processi i cui nomi corrispondono.
- F5 – Vista ad albero.
- F6 – Ordinamento.
- F7 – Aumenta la priorità del processo selezionato. Questo può essere fatto solo dal superutente.
- F8 – Diminuisci la priorità del processo selezionato.
- F9 – Termina il processo.
- F10 – Esci.
4. ls di
Linux/Unix considera tutto come file e mantiene la cartella. Quindi "File o un file" è molto importante in Linux/Unix. Mentre si lavora nel sistema Linux/Unix potrebbero esserci diversi file e cartelle che vengono utilizzati, alcuni di essi sarebbero visibili e altri no.
lsof comando sta per Elenco di file aperti . Questo comando fornisce un elenco di file aperti. Fondamentalmente, fornisce le informazioni per scoprire i file che vengono aperti da quale processo. Con una volta elenca tutti i file aperti nella console di output. Non può solo elencare file regolari comuni, ma può elencare una directory, un file speciale di blocco, una libreria condivisa, un file speciale di caratteri, una pipe normale, una named pipe, un socket Internet, un socket di dominio UNIX e molti altri. può essere combinato con il comando grep può essere utilizzato per eseguire ricerche e elenchi avanzati.
Sintassi:
lsof [option][user name]
Opzioni con esempi:
- Elenca tutti i file aperti: Questo comando elenca tutti i file che vengono aperti da qualsiasi processo nel sistema.
lsof
Qui si osserva che ci sono i dettagli dei file che vengono aperti. Process Id, l'utente associato al processo, FD(file descriptor), dimensione del file insieme fornisce informazioni dettagliate sul file aperto dal comando, ID processo, utente, la sua dimensione ecc.
- FD rappresenta come descrittore di file.
- cwd :Directory di lavoro corrente.
- txt :File di testo.
- mem :File di memoria.
- mmap :dispositivo mappato in memoria.
- Elenca tutti i file aperti da un utente: Esistono diversi utenti di un sistema e ogni utente ha requisiti diversi e di conseguenza utilizza file e dispositivi. Per trovare un elenco di file aperti da un utente specifico questo comando è utile.
Sintassi:
lsof -u username
Esempio :
lsof -u qadry
Nella figura sopra riportata con il comando lsof -u qadry elenca tutti i file aperti dall'utente. Insieme a ciò possiamo vedere il tipo di file qui e sono:
- DIR: Directory
- REG: File normale
- CR: File speciale di caratteri
- Elenca tutti i file aperti da tutti tranne che da un utente specifico: Con l'aiuto di questo comando puoi elencare tutti i file aperti da tutto il processo e da tutto l'utente. Ma quando vogliamo trovare l'elenco dei file che vengono aperti da tutti gli utenti tranne un utente particolare, possiamo usare:
Sintassi:
lsof -u ^root
Nella figura data possiamo osservare che non ci sono file aperti dall'utente root.
- Elenca tutti i file aperti da un particolare Processo: Questo comando può elencare tutti i file aperti da un particolare processo. -c seguito dai nomi dei processi può scoprire tutti i file che vengono aperti da quel particolare processo che è nominato nel comando.
Sintassi:
lsof -c crond
Qui puoi osservare che i file e la loro descrizione sono aperti dal processo crond.
- Elenca tutti i file aperti che vengono aperti da un particolare processo: Ogni file è associato a un ID processo. Possono esserci molti file che vengono aperti da un particolare processo. Usando lsof -p process ID, è possibile controllare i file aperti da un particolare processo.
Sintassi:
lsof -p process ID
Esempio :
lsof -p 2781
- File aperti da tutti gli altri PID: Poiché il comando figura sopra indicato elenca i file aperti da un particolare ID processo. Allo stesso modo, puoi utilizzare l'opzione di comando seguente per scoprire l'elenco dei file che non vengono aperti da un particolare ID processo.
Sintassi:
lsof -p ^process ID
- Elenca gli ID processo principali: C'è un gran numero di processi in esecuzione in un sistema e hanno file aperti per il suo utilizzo. Possono esserci molti processi figlio di un processo e questo processo può anche essere definito processo padre. Per scoprire l'elenco dei file aperti dal processo padre Id il comando lsof viene utilizzato con l'opzione -R .
Sintassi:
lsof -R
- File aperti da una directory: Elenca i file che vengono aperti da una directory particolare. Ci sono file così come la directory in un sistema. Quindi possono esserci diversi file aperti da una directory oltre al file normale.
Sintassi:
lsof -D directory path
- File aperti dalle connessioni di rete: Il nostro PC/sistema può essere collegato attraverso varie reti che aiutano in una varietà di scopi. Come sappiamo che in Linux tutto è un file, quindi possiamo anche controllare i file che vengono aperti da alcune connessioni di rete nel sistema.
Sintassi:
lsof -i
Esempio:
lsof -i tcp
Qui in figura possiamo vedere i file aperti dalla rete TCP. Allo stesso modo, possiamo verificare la presenza di UDP ecc.
Nota: Per saperne di più in dettaglio sul comando lsof puoi vedere la pagina di manuale come segue:
man lsof