3 回答
TA貢獻1821條經驗 獲得超5個贊
在macOS High Sierra上,使用以下命令:
lsof -nP -i4TCP:$PORT | grep LISTEN
在舊版本上,使用以下形式之一:
lsof -nP -iTCP:$PORT | grep LISTENlsof -nP -i:$PORT | grep LISTEN
$PORT用端口號或逗號分隔的端口號列表替換。
sudo如果您需要有關#1024以下端口的信息,請前置(后跟空格)。
該-n標志用于顯示IP地址而不是主機名。這使得命令執行速度更快,因為獲取主機名的DNS查找可能很慢(許多主機需要幾秒或一分鐘)。
該-P標志是用于顯示原始的端口號,而不是解決的名字,如http,ftp或像更深奧的服務名稱dpserve,socalia。
有關更多選項,請參閱注釋。
TA貢獻1805條經驗 獲得超10個贊
從Snow Leopard(10.6)到Mojave(10.14),每個版本的macOS都支持這個:
sudo lsof -iTCP -sTCP:LISTEN -n -P
就個人而言,我最終在我的這個簡單的功能~/.bash_profile:
listening() {
if [ $# -eq 0 ]; then
sudo lsof -iTCP -sTCP:LISTEN -n -P
elif [ $# -eq 1 ]; then
sudo lsof -iTCP -sTCP:LISTEN -n -P | grep -i --color $1
else
echo "Usage: listening [pattern]"
fi}然后listening命令會給出一個監聽某個端口的進程列表,并listening smth為某些模式greps這個。
有了這個,很容易詢問特定的過程,例如listening dropbox,或端口,例如listening 22。
lsof命令有一些專門的選項來詢問端口,協議,進程等,但我個人發現上面的功能更方便,因為我不需要記住所有這些低級選項。lsof是一個非常強大的工具,但不幸的是使用起來不那么舒服。
TA貢獻1789條經驗 獲得超8個贊
真的很驚訝沒有人建議:
lsof -i :PORT_NUMBER
獲得所需的基本信息。例如,檢查端口1337:
lsof -i :1337
其他變化,取決于具體情況:
sudo lsof -i :1337lsof -i tcp:1337
您可以輕松地在此基礎上提取PID本身。例如:
lsof -t -i :1337
這也與此命令等效(結果):
lsof -i :1337 | awk '{ print $2; }' | head -n 2 | grep -v PID為了完整性,因為經常一起使用:
殺死PID:
kill -9 <PID># kill -9 60401
或作為一個班輪:
kill -9 $(lsof -t -i :1337)
添加回答
舉報
