Comment puis-je tuer un processus basé sur ses arguments de ligne de commande?
killall
, pgrep
et ne pkill
semblent fonctionner qu'en fonction du nom du processus.
J'ai besoin de cela pour pouvoir différencier un certain nombre d'applications s'exécutant dans des machines virtuelles Java, où se java
trouve le nom du processus pour chacune d'elles et où le nom réel de l'application peut être trouvé en consultant les arguments de la ligne de commande.
Cela peut être fait manuellement avec ps aux | grep myapp.jar
, puis tuer manuellement le pid de la sortie, mais j'aimerais qu'une commande fasse quelque chose d'équivalent automatiquement.
bash: syntax error near unexpected token ';'
... Cela fonctionne dans une instruction case lorsque l'esperluette est suivie de;;
... peut-être vous utilisez un shell différent (?)zsh
, ce qui supporte la syntaxe que j'ai utilisée. Cependant, je l’ai enlevézsh
utilisateurs plus élevée qu'ailleurs - je semble ne trouver que deszsh
utilisateurs ici.Vous pouvez utiliser
htop
pour afficher tous les processus en cours d'exécution avec leurs arguments de ligne de commande et pour tuer un processus sélectionné.la source
Remplacez
argument
ci-dessous par une expression régulière qui doit contenir la totalité de la ligne de commande d'un processus:la source
Si vous n'avez pas pkill ou autre chose, utilisez simplement proc / [1-9] * / cmdline
la source