Glossario/Quando qualcosa va storto

PID

Anche: ID processo

In breve

Un PID, o ID processo, è un numero che macOS assegna a ogni processo in esecuzione per identificarlo. Due processi in esecuzione non hanno mai lo stesso PID, ma un numero può essere riusato dopo che il suo processo è terminato.

Monitoraggio Attività mostra il PID in una colonna apposita. I comandi del Terminale come kill, sample e lsof usano il PID per sapere a quale processo ti riferisci, visto che più processi possono avere lo stesso nome.

Su macOS, il PID 0 è kernel_task e il PID 1 è launchd, il primo processo, che avvia il resto del sistema. Le app che apri ricevono numeri più alti, e un nuovo PID a ogni avvio.

Come trovare il PID di un’app

In Monitoraggio Attività, trova l’app nell’elenco e leggi la colonna PID. Se la colonna è nascosta, scegli Vista > Colonne > PID.

Nel Terminale, pgrep -l Safari elenca i processi corrispondenti con i loro PID. ps -p <PID> -o pid,ppid,comm mostra il nome di un processo e il PID del suo processo padre.

Cosa dice il PID del processo padre

Ogni processo tranne il primo ha un padre, il processo che l’ha avviato. Scegliendo Vista > Tutti i processi in gerarchia in Monitoraggio Attività vedi questi rapporti tra padri e figli come un albero.

Come trovare un PID nel Terminale

Nel Terminale i nomi dei processi possono essere diversi da quelli delle app. Molte app eseguono processi helper con nomi come “App Helper (Renderer)”, ognuno con il suo PID.

  1. Apri il Terminale da Applicazioni > Utility.
  2. Esegui pgrep -lx Finder per ottenere il PID di un processo che si chiama esattamente Finder. Togli x per cercare una parte del nome.
  3. Se un’app ha più processi, esegui pgrep -lf "Google Chrome" per cercare nell’intera riga di comando.
  4. Per vedere il PID della tua shell, esegui echo $$.

Come scoprire a quale app appartiene un PID

Messaggi di errore e file di log citano spesso un PID senza nome. Per risalire al processo, esegui ps -p <PID> -o pid,ppid,user,command. Mostra il percorso completo del programma, quale utente lo esegue e il PID del suo padre.

In Monitoraggio Attività, fai clic sull’intestazione della colonna PID per ordinare in base a quella, poi scorri fino al numero. Fai doppio clic sul processo per aprire la finestra di informazioni, che mostra anche il processo padre.

Se ps non stampa niente, il processo è già uscito.

Cosa puoi fare con un PID

Prima controlla il nome con ps -p <PID>. I PID vengono riusati, quindi un numero copiato prima potrebbe ora appartenere a un altro processo.

  • kill <PID> chiede al processo di uscire. kill -9 <PID> lo termina subito.
  • sample <PID> 5 registra cosa fa il processo per 5 secondi.
  • lsof -p <PID> elenca i file e le connessioni di rete che ha aperto.
  • lsof -a -p <PID> -d cwd mostra la cartella in cui è in esecuzione.
  • top -pid <PID> mostra in tempo reale il suo uso di CPU e memoria. Premi q per uscire.

Quando usare un PID invece di un nome

I comandi che lavorano per nome, come killall Safari o pkill Safari, agiscono su ogni processo corrispondente. Di default killall invia il segnale di uscita a tutti i processi corrispondenti che ti appartengono, e pkill trova qualsiasi processo il cui nome contiene il testo che scrivi.

Va bene per una singola app, ma è rischioso quando molti processi hanno lo stesso nome. Un browser può eseguire decine di processi helper, e più copie di node o python possono appartenere a progetti diversi. Un PID indica esattamente un processo, quindi usalo quando vuoi fermarne uno e lasciare in esecuzione gli altri.

Se usi un nome, guarda prima le corrispondenze. pgrep -l <name> elenca quelli su cui agirebbe pkill, e killall -d <name> stampa cosa farebbe killall senza inviare niente.

Domande frequenti

Cosa significa PID in Monitoraggio Attività?

PID sta per ID processo (process ID). È un numero unico per ogni processo in esecuzione, usato per distinguere i processi e per indicarli nei comandi del Terminale.

Un’app mantiene sempre lo stesso PID?

Solo finché è in esecuzione. Quando chiudi e riapri un’app, riceve un nuovo PID.

Cos’è il PID 1 sul Mac?

Il PID 1 è launchd, il processo che avvia e gestisce gli altri processi su macOS. Non va mai chiuso.

Come terminare un processo tramite PID sul Mac?

Esegui kill <PID> nel Terminale. Se non si chiude, kill -9 <PID> lo termina subito, e i dati non salvati possono andare persi.

Due processi possono avere lo stesso PID?

Non nello stesso momento. Un PID può essere assegnato a un nuovo processo dopo che il vecchio è uscito.

Cos’è il PID 0 in Monitoraggio Attività?

Il PID 0 è kernel_task, che rappresenta il kernel di macOS. Non si può chiudere.

Correlati

Vieni da Windows? Leggi Task Manager per Mac, oppure le migliori alternative a Monitoraggio Attività. Oppure sfoglia tutti i termini del glossario.