আমি কীভাবে সকেট ফাইলগুলি / প্রোড / এফডি তে সন্ধান করব?


33

/ Proc / $ মাইপিড / এফডি / এ সন্ধান করছি, আমি এই ফাইলগুলি দেখতে পাচ্ছি

lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 0 -> /dev/pts/36 (deleted)
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 3 -> socket:[1424055856]
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 4 -> socket:[1424055868]
lrwx------ 1 cm_user cm_user 64 Oct 14 03:21 5 -> socket:[1424055882]

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

আরও সাধারণভাবে, আমি কীভাবে ওএসকে সকেটের অন্য প্রান্তে জিজ্ঞাসা করতে পারি?


1
ব্যবহার করুন socat....
হিমাইল

উত্তর:


40

কমান্ড lsof

একটি ভাল বিকল্প হতে পারে lsofman lsofরাষ্ট্র হিসাবে এটি তথ্য প্রাপ্তির জন্য কার্যকর open files such as Internet sockets or Unix Domain sockets


এটি ব্যবহার করছি

প্রথমে, /proc/$PID/fd/তালিকাবদ্ধ সকেট নম্বর সম্পর্কে ওভারভিউ পান ।
উদাহরণস্বরূপ, socket:[14240]আপনার আগ্রহী হতে পারে।

তারপরে lsof -i -a -p $PIDসমস্ত নেটওয়ার্ক ফাইল ব্যবহারের একটি তালিকা মুদ্রণ করতে $PIDব্যবহার করুন।

  • -i ব্যবহারকারী বা প্রক্রিয়া সম্পর্কিত নেটওয়ার্ক ফাইলগুলির একটি তালিকা তৈরি করে

  • -a যৌক্তিকভাবে সংযুক্ত করা হয় বা প্রদত্ত প্যারামিটারগুলি

  • -p $PID আপনার প্রক্রিয়া সম্পর্কে তথ্য নির্বাচন করে

আমার ব্রাউজারের একটি পিআইডি দিয়ে চলছে এমন একটি সাধারণ আউটপুট 2543হতে পারে:

COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
browser 2543 pidi   55u  IPv4  14240      0t0  TCP  pidi.router.lan:55038->stackoverflow.com:https (ESTABLISHED)

এবং আরও অনুরূপ লাইন।

গ্রেট! এখন DEVICEকলামটি ঘনিষ্ঠভাবে দেখুন । এটি আমাদের আগের তালিকাভুক্ত সকেটের সাথে মেলে /proc/$PID/fd/!
এবং NAMEবিভাগটির জন্য ধন্যবাদ আমরা বলতে পারি যে আমাদের সকেটের অন্য প্রান্তটি কী।

একটি বাস্তব বিশ্বে রান আপনি খুব ভাল আউটপুট পেতে পারেন, কিন্তু কেবল ফিল্টার বা grepআপনার আগ্রহের সকেট জন্য।

আমি নিশ্চিত যে কেউ সমস্ত কমান্ড একত্রিত করতে পারে তবে এটি আপনাকে শুরু করার জন্য যথেষ্ট।


ধন্যবাদ! উত্সাহিত এবং গৃহীত। আমি lsof এ "ইউনিক্স 0xffff88002704d380 0t0 1423733559 সকেট" হিসাবে প্রদর্শিত একটি সকেট দেখতে পাচ্ছি, 0xffff88002704d380 কী তা আমি কীভাবে খনন করব?
বেনহসু

1
"ইউনিক্স 0xfff ..." ইউনিক্স_সোক কাঠামোর কার্নেল মেমরি ঠিকানার মতো মনে হয়। এই কাঠামোতে আপনার সকেট-শেষের পয়েন্টের একটি পয়েন্টার রয়েছে। একবার দেখুন grep -rni ffff88002704d380 /proc। কোথাও / proc / এর অধীনে আপনার উত্তরটি থাকতে পারে, catআপনার ফাইল গ্রেপ পাওয়া গেছে। তবে আমাকে এই সম্পর্কে চিত্কার করবেন না ... এখানে ভয়াবহ ভুল হতে পারে।
পিদি

lsofথেকে সকেট সম্পর্কে অন্যান্য তথ্য সার্চ /proc/net/tcp, /proc/net/tcp6, /proc/net/udp, এবং তাই সকেট ধরনের উপর নির্ভর করে হয়।
জেসিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.