La sortie de la commande Linux ps peut-elle être filtrée par l'utilisateur ET la commande?


8

J'ai besoin du pid pour un processus étant donné son propriétaire et sa commande. Je peux filtrer un processus par utilisateur avec "ps -u xxx" et sa commande par "ps -C yyy", mais quand j'essaie "ps -u xxx -C yyy", ils sont combinés en utilisant la logique OU. J'ai besoin ET de logique. Comment puis-je accomplir cela?

Réponses:


11

Utiliser pgrep?

pgrep -U xxx yyy

il ne renvoie que le pid (ou pids, si plusieurs processus correspondent).



2

Vous utilisez commpour trouver des PID communs aux deux conditions:

ps -u xxx | sort > /tmp/ps-uxxx
ps -C yyy | sort > /tmp/ps-Cyyy
comm -1 -2 /tmp/ps-uxxx /tmp/ps-Cyyy

En utilisant bash, vous pouvez utiliser la substitution de processus pour éviter d'avoir besoin de fichiers temporaires:

comm -1 -2 <(ps -u xxx | sort) <(ps -C yyy | sort)

Ça marche, merci beaucoup. ... Mais n'y a-t-il pas de moyen plus simple (sans utiliser pgrep, car ce n'est pas disponible dans mon contexte)?
guettli

Qu'est-ce qui n'est pas facile à ce sujet?
GargantuChet

Je sais ce que commça fait. Mais je ne l'utilise qu'une fois par an. Ce n'est pas intuitif pour moi. Je suppose que tous ceux qui l'utilisent quotidiennement voient cela différemment. Ce sont de bonnes raisons pour lesquelles pgrep existe. Malheureusement pgrep n'est pas disponible dans mon contexte .... Mais c'est résolu maintenant. La racine du problème est (selon mon point de vue), que je dois prendre en charge le très ancien système d'exploitation sans pgrep.
guettli
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.