কোন পোর্টগুলি নির্দিষ্ট পিআইডি দ্বারা শ্রুত হয় তা কীভাবে জানবেন?


13

আমার ওএস এক্সে কিছু পোর্ট (গুলি) শুনার নির্দিষ্ট প্রক্রিয়ার একটি পিআইডি আমার আছে এবং এই প্রক্রিয়াটি দ্বারা কোন পোর্ট (গুলি) শোনা যাচ্ছে তা আমার জানতে হবে। আমি এটা কিভাবে করবো?

আমি জানি lsofযে কোন প্রক্রিয়াটি কোনও বন্দর শুনছে তা জানতে আমি ব্যবহার করতে পারি, তবে আমার একটি বিপরীতমুখী অপারেশন করা দরকার need

ধন্যবাদ.

UPD

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


আপনি কী বলতে চাইছেন যে আপনি যে প্রক্রিয়াটি শুনছেন সেগুলি বন্দর খুঁজতে চেষ্টা করছেন? netstatআপনার জন্য এটি করতে পারেন। আপনি grepপিআইডি-তে করতে পারেন যদি আপনি netstat
সেন্টিমিমান

এছাড়াও lsofব্যবহার শুধুমাত্র একটি উপায় নয়। আপনি যেমন কিছু করতে পারেন lsof|grep ${PID}। যা অদ্ভুতভাবে সবকিছু ফেলে দেবে এবং সেগুলিতে grepপিআইডি সহ লাইনগুলি বেছে নেবে। অফ সুযোগে এটি একটি অপ্রাসঙ্গিক লাইনটি তালিকাভুক্ত করতে পারে, কারণ ভুলভাবে অন্য কোনও মানের সাথে মিলে যাওয়া পিআইডি সংখ্যার কারণে সম্ভাবনাগুলি হ্রাস পায় না
মেলবারসালান

@ ডেভ, হ্যাঁ, আপনি ঠিক আমাকে অনুসরণ করুন আলাক, আমি দেখতে পাচ্ছি, বিএসডি সংস্করণ netstatপিআইডি প্রদর্শন করতে পারে না।
শা-কোট

@ মেলবার্স্লান এটি পরিষ্কার ঝরঝরে মত দেখায় না। তবুও এটি দ্রুত নয় - এটি আমার এমবিপিতে কিছুটা সময় নেয়।
শা-কোট

উত্তর:


13

গভীর পড়া দ্বারা আমি নিজেই একটি সমাধান খুঁজে পেয়েছি man lsof। (হ্যাঁ, আরটি * এম এখনও সহায়তা করে)) লক্ষ্য করার জন্য @ গিলসকে ধন্যবাদ।

সমাধানটি এখানে: lsof -aPi -p 555 (555 পিআইডি)।

ব্যাখ্যা:

  1. -p পিআইডি নম্বর নির্দিষ্ট করতে;
  2. -i শুধুমাত্র নেটওয়ার্ক ডিভাইস প্রদর্শন করতে;
  3. -a থেকে এবং উপরে দুটি শর্ত (অন্যথায় তারা ORed করা হবে);
  4. -P পোর্ট সংখ্যা প্রদর্শন করতে (পরিবর্তে ডিফল্টরূপে পোর্টের নাম)।

উপরন্তু, একটি ব্যবহার করতে পারেন lsof -aPi4 -p 555বা lsof -aPi6 -p 55IPv4- র বা IP6 কেবল সেই অনুযায়ী ঠিকানাগুলি।

যদি আউটপুট অন্য প্রোগ্রাম দ্বারা পার্স করা যায় তবে -Fnবিকল্পটি সহায়ক হতে পারে। এই বিকল্পটি দিয়ে lsofসুন্দর ফর্ম্যাট আউটপুটের পরিবর্তে "অন্যান্য প্রোগ্রামের জন্য আউটপুট" উত্পাদন করা হবে। lsof -aPi4 -Fn -p 555এই জাতীয় কিছু আউটপুট হবে:

p554
nlocalhost:4321

পিএস এর সমস্ত কিছুই আমি আমার ওএস এক্স এল ক্যাপিটনে পরীক্ষা করেছি, তবে আমি দেখতে পাচ্ছি এটি লিনাক্সেও কাজ করা উচিত।


6

lsofনেটওয়ার্ক পোর্ট সহ প্রসেস দ্বারা খোলা ফাইলগুলি সম্পর্কিত তথ্য সরবরাহ করে। এটি ওএসএক্স সহ অনেকগুলি ইউনিক্স সিস্টেমে উপলব্ধ ।

ইউনিক্স জন্য Rosetta স্টোন উপর ওএসএক্স "ফাইল বা পোর্টের ম্যাচ প্রক্রিয়া" অন্য কোনো সরঞ্জামটি তালিকার নেই।

টিসিপি পোর্টে শোনার প্রক্রিয়াগুলির তালিকা করতে আপনি ব্যবহার করতে পারেন

lsof -iTCP -sTCP:LISTEN

lsof -iUDPUDP সকেট খোলা রয়েছে এমন প্রক্রিয়াগুলি তালিকাভুক্ত করে। lsof -iসমস্ত ওপেন নেটওয়ার্ক সকেট (টিসিপি ক্লায়েন্ট, টিসিপি সার্ভার এবং অন্যান্য আইপি প্রোটোকল) তালিকাভুক্ত করে।


0

আপনি যদি জানতে চান যে কোন বন্দরটি শুনতে পাচ্ছে আপনি নেটস্যাটটের -p বিকল্পটি ব্যবহার করতে পারেন ou আপনার সুপারিউজার হওয়া দরকার:

$ sudo netstat -nlp | grep 80
tcp  0  0  0.0.0.0:80  0.0.0.0:*  LISTEN  125004/nginx

আপনি যদি এটি সম্পর্কে আরও জানতে চান তবে এই লিঙ্কটি ব্যবহার করে দেখুন


এটি জিএনইউ সম্পর্কে netstat, আমার ওএস এক্স রয়েছে এবং তাই বিএসডি ব্যবহার করুন netstat। এটি -pটিসিপি / আইপি পোর্ট নির্দিষ্ট করতে ব্যবহার করে এবং এতে পিআইডি প্রদর্শন করার বিকল্প নেই।
শা-কোট

0

ফ্রিবিএসডি-তে আপনি sockstatএই তথ্যের জন্য ব্যবহার করতে পারেন । ওএস এক্স আছে কিনা তা আমি নিশ্চিত নই sockstat, কারণ আমার কাছে ম্যাক নেই।

উদাহরণস্বরূপ, সমস্ত টিসিপিভি 4 সংযোগ দেখতে:

sockstat -4


আলাক, sockstatআমার ম্যাকের কোনও আদেশ নেই। :(
shau-kote

0

আপনি লিনাক্স এবং সাইগউইনগুলিতে তাদের অনুরূপ পিডের সাথে বন্দরগুলি দেখানোর জন্য গ্রেপ, আর্ক এবং সিড দিয়ে নেটস্যাট্যাট সংযুক্ত করতে পারেন:

$ netstat -ano | grep LISTENING | grep -v ‘\[::\]’ | sort -n | uniq -c | awk ‘ {print $3 “\t” $6}’ | sed ‘s/.*://’

আরো বিস্তারিত

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