GNU/Linux >> Linux Esercitazione >  >> Linux

Come ottenere solo l'utente, il pid e il comando eseguito per un processo specifico? (Ubuntu 11.10)

Immagino tu stia cercando l'argomento -o:

-o formato:

format.format definito dall'utente è un singolo argomento sotto forma di un elenco separato da spazi o da virgole, che offre la possibilità di specificare singole colonne di output. Le parole chiave riconosciute sono descritte nella sezione STANDARDFORMAT SPECIFIERS di seguito. Le intestazioni possono essere rinominate (ps -o pid,ruser=RealUser -o comm=Command) come desiderato. Se tutte le intestazioni di colonna sono vuote (ps -o pid=-o comm=) la riga dell'intestazione non verrà emessa. La larghezza della colonna aumenterà secondo necessità per le intestazioni larghe; questo può essere usato per allargare colonne come WCHAN(ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm). Viene offerto anche il controllo esplicito della larghezza (ps opid,wchan:42,cmd). Il comportamento di ps -o pid=X,comm=Y varia con la personalità; l'output può essere una colonna denominata "X,comm=Y" o due colonne denominate "X" e "Y". Usa più -ooptions in caso di dubbio. Utilizzare la variabile di ambiente PS_FORMAT per specificare un'impostazione predefinita come desiderato; DefSysV e DefBSD sono macro che possono essere utilizzate per scegliere le colonne UNIX o BSD predefinite.

Quindi il comando che desideri sarebbe (Ubuntu):

ps -o uid,pid,cmd -ef|grep python

sotto OpenSolaris il comando è:

ps -o ruser,pid,comm -ef|grep python

Il più semplice sarebbe probabilmente:

$ ps o uid=,pid=,cmd= -C python
1000 26126 python

In questo modo ottieni tutto direttamente da ps e non è necessario analizzare nulla.

Dall'ps pagina man:

-o formato

Formato definito dall'utente. format è un singolo argomento sotto forma di un elenco separato da spazi vuoti o separato da virgole, che offre un modo per specificare singole colonne di output. [...] Le intestazioni possono essere rinominate (ps -o pid,ruser=RealUser -o comm=Command) come desiderato. Se tutte le intestazioni di colonna sono vuote (ps -o pid=-o comm=), la riga dell'intestazione non verrà emessa.

-C cmdlist
     Select by command name.  This selects the processes whose executable 
     name is given in cmdlist.

Il -C funzionerà se stai eseguendo python in modo interattivo, non se Python sta eseguendo uno script. In tal caso dovresti usare -C scriptname.py invece.


ps -eo user,pid,cmd | grep [p]ython

Esempio:

$ ps -eo user,pid,cmd | grep [p]ython
root      1056 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root      1735 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
user     16613 /usr/bin/python3 /usr/share/system-config-printer/applet.py

Spiegazione:

  • -e tutti i processi
  • -o formato definito dall'utente
  • user,pid,cmd Mostra utente, ID processo, colonne di comando

Nota: se usi -f con -o come altri hanno suggerito, potresti ricevere errori. Questo perché entrambi questi parametri controllano il formato di output e solo uno di essi dovrebbe essere utilizzato:

$ ps --help | grep -A 2 "output format"
*********** output format **********
-o,o user-defined  -f full
-j,j job control   s  signal

Linux
  1. CentOS / RHEL:come trovare quale utente esegue un comando specifico?

  2. Come eseguire il comando "trova" solo sulla directory corrente e non sulle sottodirectory

  3. Come disabilitare un comando specifico per un utente specifico in Linux

  4. Come trovo l'ID del processo in Ubuntu?

  5. Come ottenere gli argomenti della riga di comando passati a un processo in esecuzione su sistemi unix/linux?

Come eseguire un comando per un tempo specifico in Linux

Come trovare il PID e il PPID di un processo in Linux

Un grande cambiamento per Samba in Ubuntu 22.04 e come aggirarlo

Come installare e utilizzare il comando dello schermo Ubuntu 20.04

Come iniziare e installare Wine per Ubuntu

Come trovare il file .pid per un determinato processo