2 votes

Comment puis-je trouver le PID d'un processus en utilisant ses arguments de ligne de commande ?

J'utilise Mac OS X, ce qui signifie que je n'ai pas (par exemple) pgrep/pkill, mais je veux quelque chose comme ça (je n'utilise pas non plus macports/fink - homebrew est mon outil de choix pour les paquets Unix - donc les paquets de ces outils ne feront pas l'affaire).

Je veux trouver et tuer une instance de ssh avec des paramètres particuliers - en fait, un tunnel de transfert de port ssh distant particulier. La commande que j'utiliserais serait quelque chose comme ceci :

ps aux | grep ssh | grep remote-host | grep port-forwarding-stmt

Toutefois, il arrive que cette commande grep apparaisse dans la sortie, de sorte que la chaîne de commande actuelle n'est pas utile telle qu'elle est écrite.

Existe-t-il un outil pour Mac OS X que je peux utiliser pour faire cela ?

3voto

Siim K Points 577

Ajoute un grep supplémentaire à la chaîne mais utilise l'option d'inversion pour supprimer toutes les requêtes de sortie grep :

ps aux | grep ssh | grep remote-host | grep port-forwarding-stmt | grep -v grep

2voto

L'astuce est de faire en sorte que grep ne se trouve pas lui-même.

... | grep "[s]sh" | ...

1voto

Arcege Points 2033

Peut aussi utiliser awk :

ps axuwww | awk '!/grep/ && /ssh/ && /remote-host/ && /port-forwarding-stmt/'

Les arguments 'www' de ps(1) permettent d'afficher la ligne de commande complète, au lieu d'une version abrégée.

1voto

Henno Points 659

ps -a -o pid, command | awk '(/[s]sh/ && /remote-host/ && /port-forwarding-stmt/){ print $1}'

combine certaines des idées énoncées. Le site -o spécifie que nous n'imprimons que le pid et la ligne de commande. print $1 n'imprime que la partie pid. Le site [s]sh fait en sorte qu'il ne se retrouve pas tout seul (belle astuce !)

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