lsof - কেবলমাত্র শারীরিক ফাইলগুলিতে আউটপুট সীমাবদ্ধ - কীভাবে?


30

আমি কীভাবে বলব যে আমাকে কেবল শারীরিক ফাইলের তালিকা তৈরি করতে হবে (সকেট নয়, টিসিপি / আইপি সংযোগ নয়, কেবল শারীরিক ফাইল)?


প্রথমে আপনাকে কী প্রয়োজন তা নির্ধারণ করতে হবে। "শারীরিক ফাইল" বলতে খুব সাধারণ is lsof আপনাকে এমন ফাইল দেবে যা কোনও ফাইল বর্ণনাকারী দিয়ে খোলা হয়েছে। এটি আপনাকে এমন ফাইল দেবে যা থ্রেড দ্বারা মেমরি-ম্যাপযুক্ত ফাইল হিসাবে খোলা হয়েছে। এটি আপনাকে গ্রন্থাগারের ফাইল দেবে যা প্রসেস দ্বারা খোলা হয়েছে। এগুলি সবই শারীরিক ফাইল, তবে সেগুলি যেভাবে ব্যবহৃত হচ্ছে তা আলাদা different
মাইকেল মার্টিনেজ 21

উত্তর:


37

কিছু ম্যান পৃষ্ঠাগুলি সন্ধান করার পরে, আপনি কমান্ডটি ব্যবহার করেছেন বলে মনে হয়:

sudo lsof /

এটি / ডিরেক্টরিতে সমস্ত উন্মুক্ত ফাইল তালিকাভুক্ত করবে, যা লিনাক্স ফাইল সিস্টেমের সমস্ত কিছু। কেবল পরীক্ষা করা হয়েছে এবং এটি কেবল আরইজি এবং ডিআইআর দেখায়।

আরও উদাহরণ:

lsof -a -d 0-999 -c <command name> /
lsof -a -d 0-999 -p <pid> /

0-999 এটিকে কোনও ফাইল বর্ণনাকারী নম্বর সহ ফাইলগুলিতে সীমাবদ্ধ করে।


2
পাশাপাশি ফিফও অন্তর্ভুক্ত করা হবে।
কাইল ব্র্যান্ড্ট 14

1
সুন্দর এবং সহজ। আপনার কেবলমাত্র সর্বশেষ কলামের প্রয়োজন হলে আপনি যুক্ত করতে পারেন awk print 'মুদ্রণ $ 9' ing আকর্ষণীয়। আমার আউটপুটে আমি ফিফোও পাই না। ফেডোরা 12 এবং
সেন্টোজ

CentOS 5.2 এবং উবুন্টু 9.04 আমার জন্য ফিফো ফিরিয়ে দেয়, পরিবর্তন হতে পারে তবে আপনি কি নিশ্চিত যে ফিফোস আছে? আমি এটা জন্য প্রথম grep এবং নিশ্চিত করতে হবে এটা আছে চেয়ে চেষ্টা/
কাইলি Brandt

এছাড়াও, আমি কেবল নিটপিকিং করছিলাম, মনে হচ্ছে তিনি কেবল গোলমাল চান না, এবং সম্ভবত খুব বেশি ফিফোও হবে না।
কাইল ব্র্যান্ড্ট

4
lsof / শুধুমাত্র মূল ফাইল সিস্টেমের ফাইল অন্তর্ভুক্ত করে। আপনার যদি একাধিক ফাইল-সিস্টেম মাউন্ট করা থাকে তবে সেগুলি আউটপুটে উপস্থিত হবে না। আমি সবচেয়ে ভাল উপায়টি খুঁজে পাই কেবল গ্রেপ ব্যবহার করা।
জেমস

9

একটি স্যুইচ থাকতে পারে, তবে আপনি যদি গ্রেপের মাধ্যমে এটি ফিল্টার করতে আপত্তি না করেন তবে আপনি sudo lsof | egrep 'REG|DIR'"শারীরিক ফাইল" ধরে ধরে ধরে নিতে পারেন , আপনি নিয়মিত ফাইল এবং ডিরেক্টরি বোঝাতে চাইছেন।

man lsofসেই কলামে থাকতে পারে এমন সমস্ত ধরণের জন্য ম্যান পেজের OUTPUT :: TYPE বিভাগটি দেখুন ।


24
কোনও সুইচ থাকতে পারে তবে
ম্যানপেজটি

1
হ্যাঁ ... লোকটি পড়তে
চূড়ান্তভাবে

মন্তব্যটি +1 করুন। :)
উদ্বিগ্ন

পর্যাপ্ত ক্লায়েন্ট সহ একটি ভিপিএন সার্ভারে, এলএসফ ফিরে আসবে না, তাই গ্রেপিং আমার পক্ষে বিকল্প নয়
ওহাদ কোহেন

@ ওহদকোহেন lsof আপনি যা খুঁজছেন তা সীমাবদ্ধ রাখলে আপনি ফিরে আসবেন। ম্যানপেজে "এফডি" দেখুন (মেমো, সিডব্লিউডি, পিডি, ইত্যাদি)
মাইকেল মার্টিনেজ

2

এটিই আমি করেছি যা আমার পক্ষে নিখুঁতভাবে কাজ করেছে:

lsof -F n -p 12501 | grep ^n/ | cut -c2- | sort -u

-F nবিকল্প lsofএটি শুধুমাত্র প্রিন্ট আউট করতে হবে নাম খোলা ফাইল। প্রতিটি আউটপুট লাইন একটি খোলা ফাইলের নাম আছে যা একক অক্ষর দিয়ে শুরু করবো এন দ্বারা অবিলম্বে অনুসৃত নামনিয়মিত ফাইলগুলি সর্বদা ফাইলের পরম, সম্পূর্ণ-যোগ্য নাম হবে। grep ^n/একটি নাম একটি দিয়ে শুরু সঙ্গে কেবলমাত্র সেই লাইন নির্বাচন হবে /(একটি পরম, সম্পূর্ণরূপে যোগ্যতাসম্পন্ন ফাইলের নাম, যার অর্থ); এভাবে খোলা বন্দর, সকেট, পাইপ (যেমন ফিফস) ইত্যাদি cut -c2-দূর করে The প্রথম অক্ষরটি nকেবল ফাইলের নাম বাদ দেবে। তারপরে অবশেষে, sort -uকোনও ডুপ্লিকেট এন্ট্রি বাদ দেবে।

একটি সতর্কতা, এর মধ্যে এমন ফাইল অন্তর্ভুক্ত থাকবে যেগুলি নিয়মিত নয় যতক্ষণ না তাদের নামটি শুরু হয় /। উদাহরণস্বরূপ, নিম্নলিখিতগুলির সাথে শুরু হওয়া সমস্ত ফাইল অন্তর্ভুক্ত থাকবে:

  • যেমন / dev
  • জন্য / proc
  • / sys

এবং আপনার ওএসের উপর নির্ভর করে অন্যরাও থাকতে পারেন।

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