কে ম্যাক ওএস এক্সে প্রদত্ত টিসিপি পোর্টে শুনছেন?


1380

লিনাক্সে, আমি ব্যবহার করতে পারি netstat -pntl | grep $PORTবা fuser -n tcp $PORTনির্দিষ্ট টিসিপি পোর্টে কোন প্রক্রিয়া (পিআইডি) শুনছে তা জানতে। আমি কীভাবে ম্যাক ওএস এক্সে একই তথ্য পেতে পারি?


27
দুঃখিত, netstat -p tcp | grep $PORTম্যাক ওএস এক্সে নেটস্পট পিআইডি প্রদর্শন করতে পারে না বলে পিআইডি প্রদর্শন করে না।
pts

12
netstat -anvম্যাক ওএস এক্সে বন্দরটি প্রদর্শন করে (উত্স: @ সানহ্যামিলিটনের নীচে সমাধান)
কার্টিস ইয়ালাপ ২

উত্তর:


2042

MacOS হাই সিয়েরায় এবং তারপরে, এই আদেশটি ব্যবহার করুন:

lsof -nP -iTCP:$PORT | grep LISTEN

বা কেবল আইপিভি 4 দেখতে:

lsof -nP -i4TCP:$PORT | grep LISTEN

পুরানো সংস্করণগুলিতে, নিম্নলিখিত ফর্মগুলির মধ্যে একটি ব্যবহার করুন:

lsof -nP -iTCP:$PORT | grep LISTEN
lsof -nP -i:$PORT | grep LISTEN

$PORTপোর্ট নম্বর বা কমা-বিভাজিত পোর্ট নম্বরগুলির তালিকা সহ বিকল্প করুন ।

শুরুতে যোগ sudo(ক স্থান থাকে) আপনি # 1024 নীচের পোর্ট সংক্রান্ত তথ্য প্রয়োজন হলে।

-nপতাকা হোস্ট নামের পরিবর্তে আইপি ঠিকানা প্রদর্শন করার জন্য। এটি কমান্ডটি আরও দ্রুত সম্পাদন করে তোলে, কারণ হোস্টের নাম পাওয়ার জন্য ডিএনএস লুকআপগুলি ধীর হতে পারে (বেশ কয়েকটি সেকেন্ড বা অনেক হোস্টের জন্য এক মিনিট) minute

-Pপতাকা কাঁচা বন্দর পরিবর্তে সংখ্যার মত সমস্যাগুলি সমাধান করা নাম প্রদর্শন করার জন্য http, ftpবা মত আরো গূঢ় পরিষেবা নাম dpserve, socalia

আরও বিকল্পের জন্য মন্তব্য দেখুন।

সম্পূর্ণতার জন্য, কারণ প্রায়শই একসাথে ব্যবহৃত হয়:

পিআইডি মারতে:

kill -9 <PID>
# kill -9 60401

152
sudoআপনার নিজস্ব নয় এমন প্রক্রিয়াগুলি এটি সহ প্রিফিক্স করুন ।
গর্ডন ডেভিসন

30
সিংহের উপর, একটি পরিবর্তন নিয়ে কাজ করেছেনsudo lsof -i TCP:$PORT | grep LISTEN
ধাওয়াল

58
মাউন্টেন grepsudo lsof -iTCP:$PORT -sTCP:LISTEN
সিংহে

16
এতগুলি অনুসন্ধানের পরেও এটি সেরা। যে সমস্ত লোকেরা সরাসরি কমান্ডটি অনুলিপি করতে চান তাদের $ পোর্টটি প্রকৃত পোর্ট নম্বর দিয়ে প্রতিস্থাপন করা উচিত বা ভেরিয়েবল পোর্টটি সংজ্ঞায়িত করা উচিত এবং সেটিও একাধিক পোর্টের জন্য: এক্সপোর্ট পোর্ট = 8080,4433; lsof -n -i4TCP: OR পোর্ট
সিদ্ধসিংহ

2
তদন্তের জন্য বন্দরটি
1024 এর বেশি হলে সুডোর

624

স্নো চিতা (10.6), মোজাভে (10.14) এবং ক্যাটালিনা (10,15) অবধি , ম্যাকোসের প্রতিটি সংস্করণ এটি সমর্থন করে:

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এবং কিছু প্যাটার্নের জন্য গ্রেপ করে।

এই ছিল, তিনি তা নির্দিষ্ট প্রক্রিয়া, যেমন সম্পর্কে জিজ্ঞাসা করতে বেশ সহজ listening dropbox, অথবা পোর্ট, যেমন listening 22

lsofকমান্ডের কাছে বন্দর, প্রোটোকল, প্রক্রিয়া ইত্যাদি সম্পর্কে জিজ্ঞাসা করার জন্য কিছু বিশেষ বিকল্প রয়েছে তবে ব্যক্তিগতভাবে আমি উপরের ফাংশনটি অনেক বেশি কার্যকর খুঁজে পেয়েছি, কারণ এই সমস্ত নিম্ন-স্তরের বিকল্পগুলি মনে রাখার দরকার নেই। lsofবেশ শক্তিশালী সরঞ্জাম, তবে দুর্ভাগ্যক্রমে ব্যবহারে তেমন স্বচ্ছন্দ নয়।


7
এটি আমার ডটফাইলে যাচ্ছে। আমি প্রতি কয়েক মাসে অনুসন্ধান করি এবং সর্বদা এই উত্তরটি নিয়ে আসি।
ড্যানিমেকিমিলন

1
আমি মনে করি এটি উত্তর হিসাবে গ্রহণ করা উচিত, যেমন ওপি বলেছেন তিনি -pntlযা করেন , যা সমস্ত পরিষেবাদির তালিকা তৈরি করবে। গৃহীত উত্তরটি এক বা একাধিক পোর্ট নম্বর নির্দিষ্ট করার জন্য বলে, যা দূরবর্তীভাবে একই নয়।
seeafish

440

আপনি এটি ব্যবহার করতে পারেন:

sudo lsof -i -n -P | grep TCP

এটি ম্যাভারিকসে কাজ করে।


3
-iবিকল্প এটি উল্লেখযোগ্যভাবে দ্রুততর করে তোলে। 0.02 সেকেন্ড বনাম 2 সেকেন্ড। আমার আবেদনে এটি বেশ পার্থক্য করেছে made
এরিক বোহেস

-i, -n, -P এই নির্দিষ্ট পতাকাগুলি কী করে? তারা ঠিক কী বোঝায় আমি কোথাও খুঁজে পাচ্ছি না
চাদ ওয়াটকিন্স

sudo lsof -i -n -P | গ্রেপ টিসিপি | গ্রেপ $ পোর্ট - আমি এই আদেশ দিয়ে একটি উপাধি তৈরি করেছি
alyn000r

আমি "| গ্রেপ $ পোর্ট" বা "| গ্রেপ লিস্টেন"
কেসি বাল্টজ

গ্রেট! মোজভেতেও কাজ করে।
গিফিল্ট ফিশ

291

জানুয়ারী ২০১ Update আপডেট করুন

সত্যিই অবাক কেউ কেউ পরামর্শ দেয়নি:

lsof -i :PORT_NUMBER

প্রয়োজনীয় প্রাথমিক তথ্য পেতে। উদাহরণস্বরূপ, 1337 বন্দরটিতে পরীক্ষা করা:

lsof -i :1337

অন্যান্য বিভিন্নতা, পরিস্থিতির উপর নির্ভর করে:

sudo lsof -i :1337
lsof -i tcp:1337

আপনি নিজেই পিআইডি এক্সট্রাক্ট করতে সহজেই এটি তৈরি করতে পারেন। উদাহরণ স্বরূপ:

lsof -t -i :1337

যা এই আদেশের সমতুল্য (ফলস্বরূপ):

lsof -i :1337 | awk '{ print $2; }' | head -n 2 | grep -v PID

দ্রুত চিত্র:

এখানে চিত্র বর্ণনা লিখুন

সম্পূর্ণতার জন্য, কারণ প্রায়শই একসাথে ব্যবহৃত হয়:

পিআইডি মারতে:

kill -9 <PID>
# kill -9 60401

বা এক লাইনার হিসাবে:

kill -9 $(lsof -t -i :1337)

2
এই কমান্ডটি শ্রোতাবিহীন পিআইডিও প্রদর্শন করে এবং স্পষ্টভাবে কেবল শ্রোতাদের জন্য জিজ্ঞাসিত প্রশ্নগুলি।
pts

3
আপনি চালাতে পারেন lsof -t -i :1338-tপ্রক্রিয়া আইডি ফিরিয়ে দেবে, যাতে আপনাকে জাগ্রত করতে হবে / হেড করতে হবে না।
কেফংক

kill -9 $(lsof -t -i :5000)এল
ক্যাপিটান

এটা অসাধারণ. আমি এটি হত্যা করার আগে সেখানে কী আছে তা জানতে পছন্দ করি, সুতরাং (এর ভিত্তিতে) আমি আমার বাশার্কে স্রেফ যুক্ত করেছি: whatsonport() { ps -ef | grep `lsof -t -i :$1` }সুতরাং:⇒ whatsonport 3000 --> 501 14866 14865 0 6:07AM ttys006 0:01.73 node .
সিগফ্রিড

1
ধন্যবাদ, lsof -i :PORT_NUMBERআমার জন্য একটি কাজ করেছেন।
মেরিকা.ডাবোজা


48

তালিকা, ইস্টাব্লিশড এবং ক্লোজড পোর্টগুলির জন্য

sudo lsof -n -i -P | grep TCP

শুধুমাত্র তালিকা বন্দরগুলির জন্য

sudo lsof -n -i -P | grep LISTEN

একটি নির্দিষ্ট তালিকা বন্দরের জন্য, উদাহরণ: পোর্ট 80

sudo lsof -n -i -P | grep ':80 (LISTEN)'

বা যদি আপনি কেবল একটি কমপ্যাক্ট সংক্ষিপ্তসার [কোনও পরিষেবা / অ্যাপ্লিকেশন বর্ণিত নেই] চান তবে নেটস্ট্যাট দিয়ে যান। এখানে ভাল দিকটি হল, কোনও সুডোর দরকার নেই

netstat -a -n | grep 'LISTEN '

ব্যবহৃত আইটেম ব্যাখ্যা:

- হোস্ট নাম দমন

-আইপিভি 4 এবং আইপিভি 6 প্রোটোকলের জন্য

-পি বন্দর নাম বাদ দাও

সমস্ত সকেটের জন্য [ একটি নেট নেটট]

-n [ নেটস্ট্যাট ওভার] নামগুলি সমাধান করবেন না, নম্বর হিসাবে নেটওয়ার্ক ঠিকানাগুলি দেখান

উপর পরিক্ষিত উচ্চ সিয়েরা 10.13.3 এবং Mojave 10.14.3

  • সর্বশেষ সিনট্যাক্স নেটস্পট লিনাক্সেও কাজ করে

বিস্তারিত ব্যাখ্যাগুলি আমার মতো নতুনদের জন্য খুব কার্যকর। ধন্যবাদ @ পিওয়াইকে
ওয়াং

46

ওএস এক্স-এ আপনি সম্পর্কিত পিড দেওয়ার জন্য নেটস্যাট-এর জন্য -v বিকল্পটি ব্যবহার করতে পারেন।

টাইপ করুন:

netstat -anv | grep [.]PORT

আউটপুটটি দেখতে এইরকম হবে:

tcp46      0      0  *.8080                 *.*                    LISTEN      131072 131072   3105      0

পিআইডি হ'ল শেষ কলামের আগে এই ক্ষেত্রে 3105 নম্বর


আপনাকে grep LISTENকেবল শ্রোতাদের দেখানোর জন্য যুক্ত করতে হবে।
pts

3
এটাই আমার দরকার! lsofবন্দরটি খুঁজে পেল না। তবে netstatএটি উন্মুক্ত ছিল -vআমার ছিল গোপন সস।
অ্যারন ম্যাকমিলিন

32

MacOS, এখানে প্রক্রিয়া আইডি একটি নির্দিষ্ট পোর্টে শুনছে পেতে একটি সহজ উপায় netstat কমান্ড । এই উদাহরণটি পোর্ট ৮০ তে সামগ্রী সরবরাহ করার প্রক্রিয়াটির সন্ধান করে:

80 পোর্টে সার্ভার চলমান সন্ধান করুন

netstat -anv | egrep -w [.]80.*LISTEN

নমুনা আউটপুট

tcp4  0 0  *.80       *.*    LISTEN      131072 131072    715      0

শেষ কলামের দ্বিতীয়টি হ'ল পিআইডি। উপরে, এটি 715

অপশন

-a - সার্ভার দ্বারা ব্যবহৃত পোর্ট সহ সমস্ত বন্দর প্রদর্শন করুন

-n- সংখ্যাগুলি দেখান, নাম সন্ধান করবেন না। এটি কমান্ডটি অনেক দ্রুত করে তোলে

-v - প্রক্রিয়া আইডি পেতে ভার্বোজ আউটপুট

-w- অনুসন্ধান শব্দ। অন্যথায় কমান্ডটি "80" নয়, 8000 এবং 8001 বন্দরগুলির জন্য তথ্য ফিরিয়ে দেবে

LISTEN - কেবলমাত্র তালিকার মোডে, অর্থাৎ সার্ভারগুলির জন্য তথ্য দিন


2
-v পতাকাটি এটি তৈরি করেছে
user9869932

18

সর্বশেষতম ম্যাকোস সংস্করণে আপনি এই আদেশটি ব্যবহার করতে পারেন:

lsof -nP -i4TCP:$PORT | grep LISTEN

যদি মনে রাখতে অসুবিধা হয় তবে সম্ভবত আপনার কোনও bashফাংশন তৈরি করা উচিত এবং এর মতো বন্ধুত্বপূর্ণ নামের সাথে রফতানি করা উচিত

vi ~/.bash_profile

এবং তারপরে সেই ফাইলটিতে নিম্নলিখিত লাইনগুলি যুক্ত করুন এবং এটি সংরক্ষণ করুন।

function listening_on() {
    lsof -nP -i4TCP:"$1" | grep LISTEN
}

এখন আপনি listening_on 80নিজের টার্মিনালটি টাইপ করতে পারেন এবং পোর্টে কোন প্রক্রিয়া শুনছেন তা দেখতে পারেন 80


13

স্নো চিতাবাঘে (ওএস এক্স 10.6.8), চলছে 'ম্যান এলএসফ' ফলন:

lsof -i 4 -a

(আসল ম্যানুয়াল এন্ট্রিটি 'lsof -i 4 -a -p 1234')

পূর্ববর্তী উত্তরগুলি স্নো চিতাবাঘে কাজ করে নি, তবে আমি পিটিএসের উত্তরগুলিতে 'লসফ' ব্যবহার না হওয়া পর্যন্ত 'নেটস্ট্যাট-এনএলপি' ব্যবহার করার চেষ্টা করছিলাম।


10

আমি লিনাক্স লোক লিনাক্সে netstat -ltpnএই অক্ষরগুলির সাথে এটি খুব সহজ বা কোনও সংমিশ্রণ। তবে ম্যাক ওএস এক্সে netstat -an | grep LISTENসবচেয়ে মানবিক। অন্যরা সমস্যা সমাধানের সময় খুব কুরুচিপূর্ণ এবং মনে রাখা খুব কঠিন।


2
প্রশ্নটি স্পষ্টভাবে একটি নির্দিষ্ট টিসিপি পোর্টের জন্য জিজ্ঞাসা করেছিল এবং আপনার আদেশগুলি সমস্ত বন্দরগুলিতে শ্রোতাদের দেখায়।
pts

7
lsof -n -i | awk '{ print $1,$9; }' | sort -u

কে প্রদর্শিত হচ্ছে তা দেখায়। হোস্ট-নেমগুলি দেখতে কিছুটা সরান (কিছুটা ধীর গতিতে)।


1
আপনার উত্তরটি খারাপ নয়, তবে এটি একাধিক বছর আগে থেকে বেশ কয়েকটি উচ্চ-উত্তরের উত্তর এবং একটি গৃহীত উত্তর সহ একটি প্রশ্ন। ভবিষ্যতে আরও সাম্প্রতিক প্রশ্নগুলিতে মনোযোগ দেওয়ার চেষ্টা করুন, বিশেষত যেগুলির এখনও উত্তর দেওয়া হয়নি।

এই কমান্ডটি নন-টিসিপি পোর্টগুলি এবং অ-শ্রোতাগুলিকেও প্রদর্শন করে? প্রশ্নটি কেবলমাত্র টিসিপি বন্দরগুলিতে শ্রোতাদের জন্য স্পষ্টভাবে জিজ্ঞাসা করে।
পিটিএস

Lsof (8) ম্যান পেজ অনুসারে: If no address is specified, this option [-i] selects the listing of all Internet and x.25 (HP-UX) network files.
মিশা তাভখিলিদেজে

@ মিশা তাভখিলিদজে: সুতরাং এটি অ-শ্রোতাগুলিকেও প্রদর্শন করে, সুতরাং এটি প্রশ্নের উত্তর দেয় না।
pts

যোগ -sTCP:LISTENকরুনlsof
মিশা তাভখিলিদেজে

3

এটি আমার যা প্রয়োজন তা করেছে।

ps -eaf | grep `lsof -t -i:$PORT`

1

কে কোথায় শুনছে তা নয়, প্রতিষ্ঠিত সংযোগগুলি এবং কোন দেশগুলির সাথে প্রদর্শন করতে হবে তা দেখার জন্য আমি একটি ছোট স্ক্রিপ্ট তৈরি করেছি। ওএসএক্স সিয়েরা-তে কাজ করে

#!/bin/bash
printf "\nchecking established connections\n\n"
for i in $(sudo lsof -i -n -P | grep TCP | grep ESTABLISHED | grep -v IPv6 | 
grep -v 127.0.0.1 | cut -d ">" -f2 | cut -d " " -f1 | cut -d ":" -f1); do
    printf "$i : " & curl freegeoip.net/xml/$i -s -S | grep CountryName | 
cut -d ">" -f2 | cut -d"<" -f1
done

printf "\ndisplaying listening ports\n\n"

sudo lsof -i -n -P | grep TCP | grep LISTEN | cut -d " " -f 1,32-35

#EOF

Sample output
checking established connections

107.178.244.155 : United States
17.188.136.186 : United States
17.252.76.19 : United States
17.252.76.19 : United States
17.188.136.186 : United States
5.45.62.118 : Netherlands
40.101.42.66 : Ireland
151.101.1.69 : United States
173.194.69.188 : United States
104.25.170.11 : United States
5.45.62.49 : Netherlands
198.252.206.25 : United States
151.101.1.69 : United States
34.198.53.220 : United States
198.252.206.25 : United States
151.101.129.69 : United States
91.225.248.133 : Ireland
216.58.212.234 : United States

displaying listening ports

mysqld TCP *:3306 (LISTEN)
com.avast TCP 127.0.0.1:12080 (LISTEN)
com.avast TCP [::1]:12080 (LISTEN)
com.avast TCP 127.0.0.1:12110 (LISTEN)
com.avast TCP [::1]:12110 (LISTEN)
com.avast TCP 127.0.0.1:12143 (LISTEN)
com.avast TCP [::1]:12143 (LISTEN)
com.avast TCP 127.0.0.1:12995 (LISTEN)
com.avast [::1]:12995 (LISTEN)
com.avast 127.0.0.1:12993 (LISTEN)
com.avast [::1]:12993 (LISTEN)
Google TCP 127.0.0.1:34013 (LISTEN)

আপনি উত্তর কোরিয়ার সাথে সংযুক্ত আছেন কিনা তা যাচাই করার জন্য এটি দরকারী হতে পারে! ;-)


0

এটি ম্যাকওএস হাই সিয়েরার একটি ভাল উপায়:

netstat -an |grep -i listen

একদম ঠিক! গৃহীত উত্তরটি আসলে সঠিক উপায় ... ম্যাক ওএস এক্সে নেটস্ট্যাট পোর্ট ম্যাপিংয়ের জন্য পিডটি দেখায় না।
tr4nc3

0

ব্যবহারকারী ব্রেন্ট স্ব দ্বারা অনুপ্রাণিত:

lsof -i 4 -a | grep LISTEN


0

ম্যাকোসের জন্য আমি মেশিনে শোনার প্রক্রিয়াগুলি এবং দূরবর্তী সার্ভারের সাথে সংযোগ স্থাপনের প্রক্রিয়া সম্পর্কিত তথ্য প্রদর্শন করতে দুটি কমান্ড একসাথে ব্যবহার করি। অন্য কথায়, কোনও হোস্টে শ্রবণ পোর্ট এবং বর্তমান (টিসিপি) সংযোগগুলি পরীক্ষা করতে আপনি নিম্নলিখিত দুটি কমান্ড একসাথে ব্যবহার করতে পারেন

1. netstat -p tcp -p udp 

2. lsof -n -i4TCP -i4UDP 

ভেবেছিলাম আমি আমার ইনপুটটি যুক্ত করব, আশা করি এটি কারও সাহায্য করা শেষ করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.