lsof: সতর্কতা: () fuse.gvfsd-fuse ফাইল সিস্টেমটি স্ট্যাটাস করতে পারে না


25

ঠিক এখানে কি ঘটছে?

root@bob-p7-1298c:/# ls -l /tmp/report.csv && lsof | grep "report.csv"
-rw-r--r-- 1 mysql mysql 1430 Dec  4 12:34 /tmp/report.csv
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.

আপনি এই সতর্কতাটি যখন আপনি শুধুমাত্র ইস্যু পেয়ে lsof(ছাড়া |এবং grep)?
শ্রী

একই সতর্কতা যেভাবেই ঘটে, তবে কেবলমাত্র lsofখোলা ফাইলের একটি বৃহত তালিকা আউটপুট করে। আমি মনে করি এটি একটি পার্শ্ব সমস্যা। আমি ভেবেছিলাম যে কোনও প্রক্রিয়া দ্বারা ফাইলটি উন্মুক্ত ছিল এবং এটি কারণ হতে পারে রুট ফাইলটি সরাতে অক্ষম, তবে এটি এমনটি বলে মনে হচ্ছে না। সুতরাং বিভ্রান্তি।
জামুনসচ

1
হ্যাঁ, দেখে মনে হচ্ছে এটি can't stat...অন্য একটি বিষয়। আমি ধরে নিই যে আসল সমস্যাটি হ'ল No such file or directoryআপনি যে ত্রুটিটি পাচ্ছেন। এটি বোকা লাগতে পারে তবে অবস্থান / বাড়ি / বব / ডেস্কটপটি কি বিদ্যমান?
শ্রী

উত্তর:


30

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

11

lsofসবসময় সমস্ত ফাইল সিস্টেম সম্পর্কে কিছু প্রাথমিক তথ্য পাওয়ার চেষ্টা করে, এমনকি যুক্তিগুলি যদি বোঝায় যে কোনও নির্দিষ্ট ফাইল সিস্টেম থেকে কোনও ফলাফল আসবে না। যদি এটি কোনও ফাইল-সিস্টেম অ্যাক্সেস করতে অক্ষম হয় (বিশেষত, statএর মাউন্ট পয়েন্টে কল করতে , যেমন বার্তাটি বলেছে), এটি অভিযোগ করে।

রুট হিসাবে, আপনার কাছে সাধারণত ফাইল সিস্টেম অ্যাক্সেসের অনুমতি থাকবে have তবে FUSE- র অভ্যন্তরীণ কাজের কারণে , মূলের FUSE ফাইল সিস্টেমে স্বয়ংক্রিয়ভাবে সমস্ত ক্ষমতা থাকে না। এটি কোনও সুরক্ষা বৈশিষ্ট্য নয় (রুট এমন ব্যবহারকারী হয়ে উঠতে পারে যা ফাইল সিস্টেমের মালিক এবং সেভাবে অ্যাক্সেস পেতে পারে), এটি প্রযুক্তিগত সীমাবদ্ধতা।

GVFS-দ্রব করা একটি ফিউজ ইন্টারফেস GVFS , যা একটি প্রক্রিয়া করেন গনোমের প্লাগিন দ্বারা বাস্তবায়িত এক্সেস ভার্চুয়াল ফাইল সিস্টেম-এ GNOME অ্যাপ্লিকেশন দেয়: GVFS নিয়মিত ফাইলসিস্টেম ইন্টারফেসের মাধ্যমে এই ভার্চুয়াল ফাইল সিস্টেম থেকে অ GNOME অ্যাপ্লিকেশন অ্যাক্সেস নিশ্চিত করে।

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