FUSE এবং এর অ্যাক্সেসের অধিকার
lsof
ডিফল্টরূপে FUSE - লিনাক্সের বিশেষ অ্যাক্সেস অধিকার রয়েছে এমন ব্যবহারকারী ব্যবস্থায় প্রয়োগ করা ফাইল সিস্টেম সহ সমস্ত মাউন্ট করা ফাইল সিস্টেম পরীক্ষা করে ।
যেমন আপনি উত্তরটিতে জিজ্ঞাসা করুন উবুন্টুকে একটি মাউন্টেড জিভিএফএস ফাইল সিস্টেম (FUSE এর বিশেষ ক্ষেত্রে) কেবলমাত্র এটি ব্যবহারকারীর কাছে অ্যাক্সেসযোগ্য যা এটি মাউন্ট করেছে (এর মালিক gvfsd-fuse
)। এমনকি root
এটি অ্যাক্সেস করতে পারে না। এই নিষেধাজ্ঞাকে ওভাররাইড করার জন্য মাউন্ট অপশন allow_root
এবং ব্যবহার করা সম্ভব allow_other
। বিকল্পটি ফুস ডিমনটিতেও সক্ষম করতে হবে যা উদাহরণস্বরূপ এই উত্তরে বর্ণিত হয়েছে ... তবে আপনার ক্ষেত্রে অ্যাক্সেসের অধিকারগুলি পরিবর্তন করার প্রয়োজন নেই (এবং হওয়া উচিত নয়)।
Lsof থেকে ফাইল সিস্টেম বাদ দিচ্ছে
আপনার ক্ষেত্রে lsof
জিভিএফএস ফাইল সিস্টেম পরীক্ষা করার দরকার নেই যাতে আপনি stat()
তাদের কলগুলি বাদ দিয়ে -e
বিকল্পটি ব্যবহার করতে পারেন (বা আপনি কেবল যুদ্ধটি উপেক্ষা করতে পারেন):
lsof -e /run/user/1000/gvfs
Lsof দ্বারা নির্দিষ্ট ফাইলগুলি পরীক্ষা করা হচ্ছে
আপনি lsof
আপনার সিস্টেমে চলমান সমস্ত প্রক্রিয়া সম্পর্কে তথ্য পেতে ব্যবহার করছেন এবং তারপরে আপনি সম্পূর্ণ আউটপুটটি ব্যবহার করে ফিল্টার করছেন grep
। আপনি যদি কিছু নির্দিষ্ট ফাইল পরীক্ষা করতে চান এবং সম্পর্কিত প্রক্রিয়াগুলি -f
সরাসরি মান অনুসরণ না করে বিকল্পটি ব্যবহার করে তবে "বিকল্পগুলির সমাপ্তি" বিভাজক হওয়ার পরে ফাইলগুলির একটি তালিকা নির্দিষ্ট করুন --
। এটি যথেষ্ট দ্রুত হবে।
lsof -e /run/user/1000/gvfs -f -- /tmp/report.csv
সাধারণ সমাধান
মাউন্ট করা সমস্ত ফাইল সিস্টেম বাদ দিতে যাতে stat()
ব্যর্থ হয় আপনি এর মতো কিছু চালাতে পারেন (এর মধ্যে bash
):
x=(); for a in $(mount | cut -d' ' -f3); do test -e "$a" || x+=("-e$a"); done
lsof "${x[@]}" -f -- /tmp/report.csv
বা ব্যবহার নিশ্চিত করতে stat()
( test -e
অন্যভাবে প্রয়োগ করা যেতে পারে):
x=(); for a in $(mount | cut -d' ' -f3); do stat --printf= "$a" 2>/dev/null || x+=("-e$a"); done
lsof
(ছাড়া|
এবং grep)?