Qual è il comando terminale per scoprire l'ID di un processo


12

Voglio uscire da un processo utilizzando la riga di comando, ma non riesco a richiamare il comando per cercare l'ID del processo. Qualcuno lo sa?

Risposte:


13

Il comando per scoprire l'id di un processo (dato il suo nome) è pidof. Tuttavia, poiché la tua intenzione è quella di uccidere il processo, ci sono modi migliori / più facili rispetto all'uso pidofdi trovare prima il suo pid:

Supponendo che il processo che si desidera uccidere sia identificato in modo univoco dal suo nome (o si desidera uccidere tutti i processi con quel nome), non è necessario conoscerne il pid. Puoi semplicemente farlo killall processname.

Se ci sono più processi con lo stesso nome, ma vuoi solo ucciderne uno, l'utilizzo pidofnon ti aiuterà molto, perché ti darà i pid, ma non ti darà alcuna informazione per determinare quale dei pids appartiene al processo che in realtà vuoi uccidere.

In questo caso puoi fare ps aux | grep processnameciò che mostrerà tutti i processi con il nome specificato e la console su cui sono in esecuzione (se applicabile) e gli argomenti con cui sono stati invocati, il che si spera ti permetta di identificare il processo che stai cercando .

Se il processo ha aperto X-windows, puoi anche usare xkillper uccidere (invocare xkille quindi fare clic sulla finestra).


7

Dovresti dare un'occhiata a pgrepe pkill, due utility molto utili e potenti che si trovano sulla maggior parte dei sistemi Linux e UNIX.

$ apropos pgrep
pgrep (1) - look up or signal processes based on name and other attributes

5

È possibile eseguire ps -Anel terminale per mostrare tutti i processi (con il loro ID processo) attualmente in esecuzione.


Inoltra per grepcercare il nome del processo specifico:ps -A | grep 'my name'
Gabriel Staples,

2

Ho anche avuto un problema simile. Ho usato pstree -p; questo mi ha mostrato gli attuali processi in esecuzione, inclusi gli ID processo.


comando interessante
jumpnett,


1

Il mio preferito è pstree -p | grep $(program_name). Questo in realtà fa fallire il processo, lo evidenzia e mostra il pid tra parentesi.

Il mio prossimo preferito (specialmente durante la programmazione e la necessità di tutti i pid dal processo) è pgrep -law "". Questo ti dà letteralmente ogni pid in esecuzione seguito dall'applicazione (con percorso assoluto).

Questo può essere ridotto a pgrep -lw ""per pid seguito dal nome del programma o anche solo pgrep -lper tutti i pid

Ovviamente, puoi cercare un particolare nome di programma (o parte del nome di un programma). (cioè pgrep -lw firefprobabilmente visualizzerà qualcosa come "4567 firefox").


Non pstree -psH $(pgrep prgram_name)sarebbe meglio per il primo caso?
Muru,

Sì, funziona anche questo. Potresti creare un alias per quello. Stavo solo usando $ () per rappresentare il nome di un programma; Penso che digitare $ (nome pgrep) sia un po 'fastidioso a causa del simbolo del dollaro, ma penso che un alias possa essere utile.
dylnmc,

0

Questa risposta, da @ Ben su una domanda duplicata , ha risolto il mio problema:

Prendi in considerazione l'utilizzo del topcomando nel terminale.

   The  top  program  provides  a dynamic real-time view of a running
   system.  It can display system summary information as  well  as  a
   list  of processes or threads currently being managed by the Linux
   kernel.  The types of system summary  information  shown  and  the
   types,  order  and size of information displayed for processes are
   all user configurable and that configuration can be  made  persis‐
   tent across restarts.

via top uomo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.