Sie müssen einen Kurzbefehl mit xargs erstellen

Sie müssen einen Kurzbefehl mit xargs erstellen

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 -tOption 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

verwandte Informationen