Articles

9 Modi per trovare l’ID di processo di un programma in Linux

Quando si lavora su un sistema Linux, a volte è necessario capire quali processi sono in esecuzione e quale PID o PPID è legato ad esso. Può essere utilizzato per molti scopi.

Fondamentalmente, cerchiamo un PID in Linux per uccidere un programma che non risponde, che può essere fatto dal task manager della GUI, ma CLI è il modo più efficiente per gestire i programmi che non rispondono.

Questo è migliore della GUI, perché a volte gli strumenti basati sulla GUI potrebbero non mostrare il processo nascosto ancora in esecuzione.,

In questo tutorial, vi mostreremo come trovare l’ID di processo (PID) di un programma in esecuzione in molti modi in Linux.

Cos’è Process ID (PID)

PID si riferisce a process ID, che è comunemente usato dalla maggior parte dei kernel del sistema operativo, come Linux, Unix, macOS e Windows.

Questo è un ID univoco che viene assegnato automaticamente a ciascun processo quando viene creato. Un processo è un’istanza in esecuzione di un programma.

Cos’è l’ID processo padre (PPID)

Un processo padre è un processo che ha creato uno o più processi figlio., A ogni processo figlio viene assegnato un ID processo parentale (PPID) e il processo genitore uccide il figlio quando completa la loro operazione.

Potresti essere interessato a leggere gli articoli qui sotto, poiché questi sono correlati a questo argomento.

  • Come scoprire quale numero di porta un processo sta usando in Linux
  • 3 Semplici modi per uccidere o terminare un processo in Linux

Ogni volta che l’ID del processo viene modificato in tutti i processi tranne init. l’init è sempre il primo processo del sistema e l’antenato di tutti gli altri processi. Contiene PID 1.,

Il valore massimo predefinito dei PID è 32,768. Questo può essere verificato eseguendo il seguente comando

cat /proc/sys/kernel/pid_max sul computer.

32,768 è il valore massimo su sistemi a 32 bit, ma può essere impostato su qualsiasi valore fino a 2^22 (circa 4 milioni) su sistemi a 64 bit.

Si può chiedere, perché abbiamo bisogno di tali dimensioni PID? Questo perché i PID non possono essere riutilizzati immediatamente e per prevenire potenziali errori.,

È possibile trovare il PID dei processi in esecuzione sul sistema utilizzando i nove metodi seguenti, come il comando pidof, il comando pgrep, il comando ps, il comando pstree, il comando ss, il comando netstat, il comando lsof, il comando fuser e il comando systemctl.

Questo può essere ottenuto utilizzando i seguenti nove metodi.

  • pidof: pidof – trova l’ID di processo di un programma in esecuzione.
  • pgrep: pgre-cerca o segnala i processi in base al nome e ad altri attributi.,
  • ps: ps-segnala un’istantanea dei processi correnti.
  • pstree: pstree-visualizza un albero di processi.
  • ss: ss viene utilizzato per scaricare le statistiche del socket.
  • netstat: netstat visualizza un elenco di socket aperti.
  • lsof: lsof – list file aperti.,
  • fuser: fuser – list ID processo di tutti i processi che hanno uno o più file aperti
  • systemctl: systemctl – Controllare il sistema systemd e service manager

Per dimostrare questo, stiamo andando a trovare l’ID processo Apache. Assicurati di inserire il tuo nome di processo invece di noi.

1) Come trovare un ID di processo (PID) in Linux, usando il comando pidof?

Il comando pidof viene utilizzato per trovare l’ID del processo del programma in esecuzione. Stampa quegli ID nello standard output., Per dimostrare questo, troveremo l’ID del processo ‘Apache2’ nel sistema.

# pidof apache2
2594 2365 2364 2363 2362 2361

Nell’output precedente potresti avere difficoltà a identificare l’ID del processo perché visualizza tutti i PID (inclusi padre e figlio) rispetto al nome del processo.

Quindi abbiamo bisogno di trovare il processo genitore PID (PPID), che è quello che stiamo cercando. Questo sarà il primo numero. Nel mio caso è 3754 ed è ordinato in ordine decrescente.

2) Come cercare un ID di processo (PID) in Linux, usando il comando pgrep?,

Il comando pgrep esamina i processi attualmente in esecuzione ed elenca gli ID di processo che corrispondono ai criteri di selezione.

# pgrep apache2236123622363236423652594

L’output di cui sopra è simile all’output del comando ‘pidof’ , ma ha ordinato i risultati in ordine crescente, il che mostra chiaramente che il processo padre PID è in piedi a last.In il mio caso è 3754.,

Nota: identificare l’ID del processo genitore può essere problematico quando si utilizza il comando ‘pidof’& ‘pgrep’, poiché ogni processo viene fornito con un singolo PPID e più PID che non mostrano la differenza tra loro.

3) Come individuare un ID di processo (PID) in Linux, usando il comando pstree?

Il comando pstree mostra i processi in esecuzione come un formato ad albero che è un modo molto conveniente per visualizzare la gerarchia dei processi e rende l’output più visivamente accattivante., Se un nome utente è specificato nel comando pstree, mostra tutto il processo di proprietà dell’utente corrispondente.

pstree unisce visivamente rami identici mettendoli tra parentesi quadre e prefissandoli con il conteggio delle ripetizioni.

# pstree -p | grep "apache2" |-
-+-apache2(2361) | |-apache2(2362) | |-apache2(2363) | |-apache2(2364) | |-apache2(2365) | `-apache2(2594)

Per ottenere solo il processo genitore, utilizzare il seguente formato.

# pstree -p | grep "apache2" | head -1 |-
-+-apache2(2361)

Il comando‘pstree’ è molto migliore del comando ‘pidof’& ‘pgrep’ perché separa i processi padre e figlio che non sono possibili da loro.,

4) Come trovare un ID di processo (PID) in Linux, usando il comando ps?

Il comando ps visualizza informazioni su una selezione dei processi attivi che include l’ID del processo (pid=PID), il terminale associato al processo (tname=TTY), il tempo di CPU cumulato in formato hh:mm:ss (time=TIME) e il nome dell’eseguibile (ucmd=CMD). L’output non è ordinato per impostazione predefinita.

L’ID processo padre (PPID) può essere facilmente identificato in base alla data di inizio del processo dall’output precedente., Nel nostro caso il processo’ Apache2 ‘è iniziato su December 11th, che è il processo genitore e gli altri il processo figlio. Il PID di Apache2 è 3754.

5) Come trovare un ID di processo (PID) in Linux, usando il comando ss?

Il comando ss viene utilizzato per scaricare le statistiche del socket. Permette di mostrare informazioni simili a netstat. Può visualizzare più informazioni TCP e di stato rispetto ad altri strumenti.

Può visualizzare statistiche per tutti i tipi di socket come PACKET, TCP, UDP, DCCP, RAW, Unix domain, ecc.,

# ss -tnlp | grep apache2LISTEN 0 128 :::80 :::* users:(("apache2",pid=3319,fd=4),("apache2",pid=3318,fd=4),("apache2",
,fd=4))

6) Come trovare un ID di processo (PID) in Linux, usando il comando netstat?

Il comando netstat viene utilizzato per stampare connessioni di rete, tabelle di routing, statistiche di interfaccia, connessioni masquerade e appartenenze multicast. Per impostazione predefinita, netstat visualizza un elenco di socket aperti.

Se non si specificano famiglie di indirizzi, verranno stampati i socket attivi di tutte le famiglie di indirizzi configurate. Questo programma è obsoleto. La sostituzione per netstat è ss.

# netstat -tnlp | grep apache2tcp6 0 0 :::80 :::* LISTEN 

7) Come trovare un ID di processo (PID) in Linux, usando il comando lsof?,

Il comando lsof viene utilizzato per elencare i file aperti. Il comando lsof di Linux elenca le informazioni sui file aperti dai processi in esecuzione sul sistema.

8) Come trovare un ID di processo (PID) in Linux, usando il comando fuser?

L’utilità fuser deve scrivere nello standard output gli ID di processo dei processi in esecuzione sul sistema locale che hanno uno o più file con nome aperti.

# fuser -v 80/tcp USER PID ACCESS COMMAND80/tcp: root 
www-data 3318 F.... apache2 www-data 3319 F.... apache2

9) Come trovare un ID di processo (PID) in Linux, usando il comando systemctl?

Il comando systemctl viene utilizzato per controllare systemd service manager., Questo è un sostituto per la vecchia gestione del sistema SysVinit, e la maggior parte dei moderni sistemi operativi Linux sono stati spostati al systemd.