2016-07-17 7 views
1

Wenn ich will einen Prozess auf einem bestimmten Port töten (lassen 8000 sagen) Ich bin mit Befehl:schließen viele Ports auf einmal

kill -9 `lsof -i :8000` 

Gibt es eine Möglichkeit auf einmal viele Ports zu schließen? Ich muss Prozess auf Häfen 8000-9000 töten und dieses von Hand tun ist ziemlich ineffizient.

+0

Kennen Sie Bash-Skripte? Wenn Sie ein Skript des oben genannten erstellen, nehmen Sie den Portbereich als Eingabeparameter, und manipulieren Sie die Zeile, die Sie oben haben, um Ihren Eingabeparameter zu verwenden, sind Sie zu Hause :) – mattias

+0

@mattias I don ' Ich weiß viel, aber wenn Sie ein Tutorial kennen, bin ich froh zu lernen! – Ziva

+0

Ist Ihr Befehl oben arbeiten btw? Welche OS X Version verwendest du? – mattias

Antwort

1

Ok, erster Versuch, Ihnen ein funktionierendes Skript dafür zu geben.

#!/bin/bash 
for i in {8000..9000} 
do 
    kill -kill `lsof -t -i tcp:$i` 
done 

Setzen Sie die oben in einer .sh Datei, myportrangekiller.sh und ausführbar machen, chmod +x myportrangekiller.sh und es mit $ ./myportrangekiller.sh von Ihrem Terminal laufen. Dies wird durch die Ports 8000-9000 durchlaufen und diese Prozesse beenden.

schwer für mich, um zu überprüfen, ob es funktioniert, wie ich folgendes bin immer, wenn Sie Ihren Befehl in OS X El Capitan läuft,

Sieg: Nutzung: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... oder tötet -l [sigspec]

Btw, ich Ihren Befehl leicht, lost-lost verändert, angenommen Art, dass Sie die binären Namen falsch geschrieben.

+2

Ich denke, Sie wollen wahrscheinlich nicht erstellen und führen Sie Tausende von "lsof" -Prozessen, und Sie könnten besser dran mit einer Reihe von Ports mit 'lsof -t -i tcp: 8000-9000' –

+0

Nun, es ist nur ein One-Liner und keine Notwendigkeit für meinen schlechten Versuch, OPs anfängliches Kommando zu wiederholen. @Ziva, können Sie überprüfen, ob der obige Kommentar funktioniert? – mattias

Verwandte Themen