我總是想殺死一個監聽端口 3000 的進程 id。
1.lsof -i tcp:3000
將輸出為,
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 6697 xxxx 5u IPv4 251982 0t0 TCP *:3000 (LISTEN)
我將使用2殺死 PID 。kill -9 6697
我想創建一個 bash 程式來自動執行此過程。
我嘗試使用 xargs 來獲取第一個命令的輸出的 PID,但失敗了。
答案1
首先,您需要-t
lsof 選項,它只發出 pid。你也可以給kill一個pid列表,所以:
kill -9 $(lsof -ti tcp:3000)
如果你經常這樣做,請建立一個別名
alias kill3000='kill -9 $(lsof -ti tcp:3000)'
答案2
這是(沒有xargs
):
lsof -i tcp:8080 | while read cmd pid rest; do ((pid)) && kill -9 $pid; done