63 votes

Comment empêcher "ps" de signaler son propre processus ?

$ ps | grep django
28006 ttys004    0:01.12 /usr/bin/python bin/django celeryd --beat
51393 ttys005    0:01.45 /usr/bin/python bin/django celeryd -l INFO
51472 ttys005    0:01.29 /usr/bin/python bin/django celeryd -l INFO
51510 ttys005    0:01.89 /usr/bin/python bin/django celeryd -l INFO
51801 ttys005    0:01.83 /usr/bin/python bin/django celeryd -l INFO
53470 ttys005    0:03.97 /usr/bin/python bin/django celeryd -l INFO
53780 ttys005    0:00.00 grep django

Existe-t-il un moyen d'empêcher que le dernier processus (c'est-à-dire le grep qui a été lancé en même temps que ma commande ps) soit signalé ?

(J'ai commencé à essayer de trouver une regex qui correspondrait au littéral mais pas à lui-même, mais cela ne semblait pas être la bonne approche...)

8voto

user434002 Points 37

ps -d | grep django

de l'homme ps :

 -d                  Lists information  about  all  processes
                     except session leaders.

2voto

pt1997 Points 21

Cela ne se produit que lorsque je lance une commande ssh "script" ou lorsque j'utilise des outils de gestion à distance. Je n'aime pas le côté bricolage des solutions précédentes. Je ne suis pas sûr que ce que j'ai inventé soit meilleur, mais voici :

| grep -v $$

$$ est remplacé par le PID du "processus" ps/pgrep et -v indique à grep de ne pas l'imprimer.

démo :

watch date &
bash -c 'echo; pgrep -lfa watch | grep -v $$'

le site bash -c et le echo sont uniquement nécessaires pour simuler la situation mentionnée et parce qu'autrement pgrep ne se signalerait pas.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X