Je suppose que vous recherchez l'argument -o :
-o format :
format.format défini par l'utilisateur est un argument unique sous la forme d'une liste séparée par des blancs ou des virgules, qui permet de spécifier des colonnes de sortie individuelles. Les mots-clés reconnus sont décrits dans la section STANDARDFORMAT SPECIFIERS ci-dessous. Les en-têtes peuvent être renommés (ps -o pid,ruser=RealUser -o comm=Command) comme vous le souhaitez. Si tous les en-têtes de colonne sont vides (ps -o pid=-o comm=), la ligne d'en-tête ne sera pas affichée. La largeur de colonne augmentera selon les besoins pour les en-têtes larges ; cela peut être utilisé pour élargir des colonnes telles que WCHAN(ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm). Le contrôle explicite de la largeur (ps opid,wchan:42,cmd) est également proposé. Le comportement de ps -o pid=X,comm=Y varie selon la personnalité; la sortie peut être une colonne nommée "X,comm=Y" ou deux colonnes nommées "X" et "Y". Utilisez plusieurs -ooptions en cas de doute. Utilisez la variable d'environnement PS_FORMAT pour spécifier une valeur par défaut comme vous le souhaitez ; DefSysV et DefBSD sont des macros qui peuvent être utilisées pour choisir les colonnes UNIX ou BSD par défaut.
Donc, la commande que vous voulez serait (Ubuntu):
ps -o uid,pid,cmd -ef|grep python
sous OpenSolaris la commande est :
ps -o ruser,pid,comm -ef|grep python
Le plus simple serait probablement :
$ ps o uid=,pid=,cmd= -C python
1000 26126 python
De cette façon, vous obtenez tout directement de ps
et n'avez pas besoin d'analyser quoi que ce soit.
Depuis le ps
page de manuel :
format -o
Format défini par l'utilisateur. format est un argument unique sous la forme d'une liste séparée par des blancs ou des virgules, qui offre un moyen de spécifier des colonnes de sortie individuelles. [...] Les en-têtes peuvent être renommés (ps -o pid,ruser=RealUser -o comm=Command) comme désiré. Si tous les en-têtes de colonne sont vides (ps -o pid=-o comm=), la ligne d'en-tête ne sera pas générée.
-C cmdlist
Select by command name. This selects the processes whose executable
name is given in cmdlist.
Le -C
l'option fonctionnera si vous exécutez python
interactivement, pas si python exécute un script. Dans ce cas, vous devez utiliser -C scriptname.py
à la place.
ps -eo user,pid,cmd | grep [p]ython
Exemple :
$ 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
Explication :
-e
tous les processus-o
format défini par l'utilisateuruser,pid,cmd
Afficher l'utilisateur, l'ID de processus et les colonnes de commande
Remarque : si vous utilisez -f
avec -o
comme d'autres l'ont suggéré, vous pouvez obtenir des erreurs. En effet, ces deux paramètres contrôlent le format de sortie et un seul d'entre eux doit être utilisé :
$ ps --help | grep -A 2 "output format"
*********** output format **********
-o,o user-defined -f full
-j,j job control s signal