Je veux un script qui tue l'instance (s) de ssh
qui fonctionnent avec l'argument -D (configurant un proxy local).
Manuellement, je fais ps -A | grep -i ssh
, recherchez la ou les instances avec -D, et kill -9 {id}
chacun.
Mais qu'est-ce que cela ressemble à Bash Script?
(Je suis sur Mac OS X mais installera toutes les commandes nécessaires via port
)
Courir pgrep -f "ssh.*-D"
et voir si cela renvoie l'identifiant de processus correct. Si c'est le cas, changez simplement pgrep
à pkill
et conserver les mêmes options et modèles
En outre, vous ne devriez pas utiliser kill -9
AKA SIGKILL, sauf absolument nécessaire, car les programmes ne peuvent pas piéger SIGKILL pour nettoyer après eux-mêmes avant de sortir. Je n'utilise que kill -9
Après avoir essayé d'abord -1
-2
et -3
.
Aussi,
kill `pgrep -f "ssh.*-D"`
Vous pouvez exploiter le système de fichiers PRO pour recueillir les informations. Par exemple:
for proc in $(grep -irl "ssh.*-D" /proc/*/cmdline | grep -v "self"); do if [ -f $proc ]; then cat $proc && echo ""; fi; done
Ce n'est pas parfait, vous voudrez une regex plus exclusive (surtout si vous tuez des processus) mais echo $proc | awk -F'/' '{ print $3 }'
vous montrera le PID du processus (ES).