Ich möchte immer einen Prozess beenden, der auf Port 3000 lauscht. Derzeit verwende ich daher
1.lsof -i tcp:3000
gibt die Ausgabe wie folgt aus:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 6697 xxxx 5u IPv4 251982 0t0 TCP *:3000 (LISTEN)
und ich werde den PID mit
2 beenden.kill -9 6697
Ich möchte ein Bash-Programm erstellen, das diesen Vorgang automatisch durchführt.
Ich habe versucht, mit xargs die PID der Ausgabe des ersten Befehls zu erhalten, aber das hat nicht funktioniert.
Antwort1
Zunächst benötigen Sie die -t
Option lsof, das nur PIDs ausgibt. Sie können kill auch eine Liste der PIDs geben, also:
kill -9 $(lsof -ti tcp:3000)
Wenn Sie dies häufig tun, erstellen Sie einen Alias
alias kill3000='kill -9 $(lsof -ti tcp:3000)'
Antwort2
Hier ist es (ohne xargs
):
lsof -i tcp:8080 | while read cmd pid rest; do ((pid)) && kill -9 $pid; done