"Lsof" কমান্ডের বিকল্প?


20

অনেক ক্ষেত্রে "lsof" মেশিনগুলিতে ইনস্টল করা হয় না যেগুলি নিয়ে আমার কাজ করতে হবে তবে lsof এর "ফাংশন" খুব দরকার হবে (প্রাক্তন। এআইএক্সে)। : \

উইন্ডোজবিহীন বিশ্বের কোনও "lsof" অ্যাপ্লিকেশনগুলির মতো কি আছে?

আপডেট: প্রাক্তন হিসাবে: আমার জানা দরকার যে "/ হোম / ইউজারনেম" ডিরেক্টরিটি কোন প্রক্রিয়াগুলি ব্যবহার করে?


1
আপনি কি আরও নির্দিষ্ট হতে পারেন, দয়া করে? AIX (যা অবশ্যই lsof দ্বারা সমর্থিত) বাদে কোন সিস্টেমগুলি আপনার মনে আছে? বা আপনার মনে রাখা lsof এর একটি নির্দিষ্ট ধরণের ব্যবহার রয়েছে? সাধারণত: এলএসফ কেন হয় না ?
রোজিট্রিজেভিয়াক্জ

আমি লিনাক্স 2.6.18-92.el5 GNU ব্যবহার করছি, এবং আমার কাছে lsof নেই, না আমার lsof ব্যবহারের ক্ষমতাও আছে :(
এসএসএইচ

সম্পর্কিত প্রশ্ন: কীভাবে
এলএসফ

উত্তর:


20

আমি জানি fuser, আপনার সিস্টেমে উপলব্ধ কিনা তা দেখুন।


সিস্টেমে সমস্ত খোলার ফাইল তালিকাভুক্ত করার জন্য প্যারামিটার হিসাবে ফুসারকে আমার কী দিতে হবে? : হে টাই!
ল্যান্সবায়নেস

2
কমান্ডটি sudo fuser -vm / 2>&1 | awk '$3 ~ /f|F/' | lessমাউন্ট করা ফাইল সিস্টেমে খোলা ফাইল থাকা সমস্ত প্রক্রিয়াটি প্রদর্শন করতে পারে /। নির্দিষ্ট সহায়তার জন্য ম্যান পৃষ্ঠা দেখুন।
enzotib

TY! এটি এর মতো আউটপুট দেয়: পেস্টবিন.com / raw.php? i= 2z19g6Rk - আমি এটির জন্য গুগল দিয়েছি , তবে আমি আউটপুট প্রাক্তনের কোনও উপায় খুঁজে পাচ্ছি না: "জিনোম-স্ক্রিনসেভার", "জিনোম-স্ক্রিনস্যাভ" নয় - তাই আমি কীভাবে প্রশস্ত কমান্ডের নাম দিয়ে এটি আউটপুট করতে পারি? : ও
ল্যান্সবায়েন্স

এটি এর জন্য একই আউটপুট দেয়: পেস্টবিন.
com

এর মতো কিছু:sudo fuser -vm / 2>&1 | awk '$3 ~ /f|F/' | while read user pid flags rest; do printf '%10s %10s %10s %s\n' $user $pid $flags "$(</proc/$pid/cmdline)"; done | less
এনজোটিব

15

ইউনিক্স Rosetta স্টোন প্রশ্ন এই ধরনের একটি ভাল সম্পদ। এটি lsof এর জন্য কয়েকটি বিকল্পের উল্লেখ করেছে (নীচে দেখুন)। তবে খেয়াল রাখবেন যে lsof হ'ল এটি করার জন্য ডি ফ্যাক্টো স্ট্যান্ডার্ড অ্যাপ্লিকেশন।

যদি আপনি যা চান তা হ'ল কোনও নির্দিষ্ট ফাইল খোলা রয়েছে এমন প্রসেস আইডি (গুলি) খুঁজে বের করা, তবে আপনি যে fuserকোনও পসিক্স-কমপ্লায়েন্ট সিস্টেমে ব্যবহার করতে পারেন ।

/procডিরেক্টরি সহ অপারেটিং সিস্টেমগুলিতে , আপনি তথ্যের মাধ্যমে কোনও প্রক্রিয়া ( lsofঅপারেশনের সবচেয়ে সাধারণ মোডের বিপরীত) দ্বারা খোলা ফাইলগুলি অনুসন্ধান করতে পারেন /proc। কিছু অপারেটিং সিস্টেমে এর জন্য কমান্ড রয়েছে:


8

আপনি সোলারিস, এর একটি বিকল্প চালানোর ঘটতে তাহলে lsofযা ডিফল্টভাবে না ইনস্টল করা এবং ZFS উপর শ্বাসরোধ পারে, হয় pfiles

উদাহরণ:

pfiles /proc/*


2

আমার সংস্করণ, ইউটিলিটিগুলির সামান্য কম চালনার সাথে:

for proc_pid in $(find /proc -maxdepth 1 -name "[0-9]*"); do \
    ls -l ${proc_pid}/fd 2>/dev/null \
    | grep -q "$search_term" \
    && echo "${proc_pid#/proc/}"; \
done

স্বীকার করা যায়, এটি সমস্ত কোণার কেসগুলি পরিচালনা করতে পারে না, তবে আমার ব্যবহারের ক্ষেত্রে কাজ করছে।


0

এই কৌতুক করতে হবে। এটি সমস্ত ফাইল বিবরণকারী ম্যাপিংগুলি দেবে যা ব্যতীত:

  • আপনার দেখার অনুমতি নেই, বা
  • ফাইলগুলির জন্য যা "অনুমতি অস্বীকৃত" স্ট্রিং ধারণ করে
( find /proc -mindepth 1 -maxdepth 1 \
  | grep -E [0-9]+ | xargs -n 1 -I% find %/fd \
  | xargs ls -l \
  | grep -v "Permission denied" ) 2>/dev/null \
| cut -d' ' -f12- | less

আপনি যদি ইতিমধ্যে জানেন যে আপনি নির্দিষ্ট কিছু প্রোগ্রামের জন্য কেবল ম্যাপিংগুলি সম্পর্কে যত্নশীল হন তবে আপনি এর পরিবর্তে আরও কিছু ব্যবহার করতে পারেন:

exec=sshd
pgrep "$exec" | xargs -n 1 ps -p
pgrep "$exec" | xargs -n 1 -I% find /proc/%/fd | xargs ls -l | cut -d' ' -f12- | less

-2

কখনও কখনও lsofইনস্টল করা হয়/usr/sbin

যদি /usr/sbinআপনার অংশ না হয় তবে $PATHআপনি ইনস্টল করা কমান্ডটি মিস করতে পারেন।

এটি দিয়ে পরীক্ষা করুন

whereis lsof
lsof: /usr/sbin/lsof /usr/share/man/man8/lsof.8.gz

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