উত্তর:
স্টিফেন যেমন বলেছিলেন যে "এর কোনও সর্বজনীন ইউনিক্সের উত্তর নেই"।
আমার প্রশ্নের সেরা সমাধানটি আমি খুঁজে পেয়েছি:
df -P -T /my/path/to/folder | tail -n +2 | awk '{print $2}'
ফাইল সিস্টেমের ধরণটি প্রদান করবে, উদাহরণস্বরূপ: nfsবা ext3।
-Tবিকল্প নয় মান , তাই এটি অন্য ইউনিক্স / লিনাক্স অপারেটিং সিস্টেমে কাজ নাও করতে পারে ...
গিলসের নীচে মন্তব্য অনুসারে : "এটি কোনও এমবেডেড লিনাক্সে কাজ করে না, তবে ব্যাসিবক্স, * বিএসডি ইত্যাদিতে নয়" "
/etc/mtabবা ফলাফল দেখার ফলাফল আরও কিছু ক্ষেত্রে করতে পারে। mountdf
/proc/mounts
mountবা নাও /etc/mtab, এমনকি /proc/mountsমানসম্পন্ন নয় তাই সেখানে কী পাওয়া যাবে তার কোনও গ্যারান্টি নেই ...
-Tএখানে আলাদা অর্থ রয়েছে
আপনি জিএনইউ ব্যবহার করতে পারেন stat।
%m মাউন্টপয়েন্ট খুঁজে পেতে।
$ stat --format=%m /usr/src/linux
/usr/src
%T (ফাইল-সিস্টেম মোডে) ফাইল সিস্টেমের নাম জানতে।
$ stat --file-system --format=%T /usr/src/linux
reiserfs
সুতরাং আপনি জানেন যে /usr/src/linux, আমার সিস্টেমে এমন একটি ফাইল সিস্টেমে সঞ্চিত আছে যা মাউন্ট করা থাকে /usr/srcএবং এতে ফাইল সিস্টেমের ধরণ থাকে reiserfs।
এছাড়াও পড়ুন man statআরও রেফারেন্সের জন্য। এটি একটি বহুমুখী কমান্ড, প্রায়শই কার্যকর যখন আপনার ফাইল সম্পর্কিত তথ্য প্রয়োজন হয় এবং grep | awkওয়ার্ডনেসে ফিরে যেতে চান না ।
statনেই %mজন্য বিকল্প --format(ডেবিয়ান কুঈজ ব্যবহার করে, coreutils 8.5)। সুতরাং, আমি অনুমান করি যে এই সমাধানটি খুব নির্ভরযোগ্য নয়।
2010-08-27 <Aaron Burgemeister> stat: add %m to output the mount point for a file। সেটা প্রায় years বছর আগের কথা। আশ্চর্যজনক যে ডেবিয়ানের এখনও এটি নেই।
mount -lএবং ব্যবহার করুন grep, sedবা awkপ্রশ্নে ডিরেক্টরি উল্লেখ করে এমন লাইনটি সন্ধান করুন।
/my/path/to/the/directoryমাউন্টপয়েন্ট থেকে আসলে কিছু মনে করা জটিল মনে হচ্ছে looks /my/pathহতে পারে আপনি সম্পর্কে আরো কিছু বিবরণ দিতে পারেন grep, sed, awkআপনার প্রস্তাবিত কমান্ড (সম্পূর্ণ উত্তর) ?.
mount -l | grep 'type nfs' | sed 's/.* on \([^ ]*\) .*/\1/'আপনাকে সিস্টেমের সমস্ত nfs মাউন্টপয়েন্টগুলির একটি তালিকা দেওয়া উচিত।
mount | fgrep "`stat --printf=" on %m type" /var/log/`". The মাউন্ট` কমান্ডটি সমস্ত মাউন্ট পয়েন্টগুলি, <device> on <mountpoint> type <type>ফর্ম্যাটে মুদ্রণ করবে । এটি গ্রেপ করার জন্য, আমি অংশটি stat --printfতৈরি করেছি on <mountpoint> type।
দুর্ভাগ্যক্রমে, এর কোনও সার্বজনীন ইউনিক্স উত্তর নেই।
একটি কাজ আপনি করতে পারেন, একটি প্রদত্ত ফাইলের /a/b/c/dজন্য পথ চলা:
... এবং পরিবর্তন stat(2)না হওয়া পর্যন্ত প্রতিটি স্তরে একটি করুন st_dev। তারপরে আপনি জানতে পারবেন মাউন্ট পয়েন্টটি কোথায়। তারপরে আপনি ফাইল সিস্টেমের ধরণের সন্ধানের জন্য সেই মাউন্ট পয়েন্টের /etc/mtabআউটপুটটিতে আধ্যাত্মিক পথটি সন্ধান করতে পারেন mount। তারপরে রিমোটটি কী এবং কী নয় তা সন্ধান করা বিশেষত ফিউজ-টাইপযুক্তদের জন্য জটিল to উদাহরণস্বরূপ, nfs, cifs, fuse.sshfs, fuse.davfsসুস্পষ্ট, কিন্তু কী উদাহরণস্বরূপ fuse.gvfs-fuse-daemonবা fuse.avfsdউভয় নেটওয়ার্ক এবং অ নেটওয়ার্কের ফাইল থাকতে পারে?
stat(2), আমি মনে করি আপনি সি ফাংশনটি রিফ্রেশ করছেন তবে আমি শেলটি ব্যবহার করছি। যাইহোক, st_devপ্রধান ও অপ্রধান ডিভাইস ID উল্লেখ করে, এবং শেল কমান্ড (লিনাক্সের নির্দিষ্ট? যে হয়) stat(1)আছে (অ-মানক) %tএবং %Tসঙ্গে --formatযথাক্রমে প্রধান ও অপ্রধান সংখ্যার জন্য বিকল্প, কিন্তু এটা সবসময় "0" ফেরৎ (স্থানীয় এবং NFS )। আমি দেবিয়ান স্কিজ এবং লেনির চেষ্টা করেছিলাম।
--file-systemবিকল্পটি দিয়ে বা না করে এটি চেষ্টা করছেন ?
--file-system।
"-L" থেকে df (1) অ স্থানীয় লোকাল ফাইল সিস্টেমে একটি ত্রুটি নিয়ে ব্যর্থ হবে, তাই আপনি ফাইল সিস্টেমটি দূরবর্তী কিনা তা জানতে এই আচরণটি ব্যবহার করতে পারেন:
df -l /path 2> /dev/null | grep -q "File"
rc=$?
if [ "$rc" = "0" ]
then
echo "local mount, do stuff"
fi
তবে -lবিকল্পটি মানসম্মত নয় ।
dfব্যর্থ হবার অন্যান্য বিভিন্ন কারণ রয়েছে এবং এটিই কেবল এটিকে খুব ভাল উত্তর দেয় না, তবে এটি প্রশ্নের উত্তর দেওয়ার চেষ্টা করছে যাতে আপনি কেন এটিকে "উত্তর না বলে" ডাকবেন তা আমি দেখতে পাচ্ছি না।
আপনি df -tঅন লিনাক্স এবং df -Tবিএসডি সিস্টেমে ব্যবহার করতে পারেন ।
ম্যান ডিএফ থেকে :
-t, - টাইপ = টিওয়াইপি
টাইপ TYPE ফাইল সিস্টেমের মধ্যে তালিকা সীমাবদ্ধ করুন
if df -t nfs | grep -q /path/to/folder$; then
# it is an NFS
fi
-tবিকল্পটির আলাদা অর্থ রয়েছে। সুতরাং, এই বিকল্পটি ব্যবহার করা সরঞ্জাম / ইউনিক্সের বিভিন্ন সংস্করণে অসঙ্গতিপূর্ণ ফলাফল সরবরাহ করতে পারে।
আমি ব্যক্তিগতভাবে ব্যবহার করব mountpoint(লিনাক্সে খুব বহনযোগ্য!):
NAME
mountpoint - see if a directory is a mountpoint
SYNOPSIS
mountpoint [-d|-q] directory
বা showmountযা আসলে এমন কোনও সিস্টেমে ইনস্টল করা দরকার যা প্রকৃতপক্ষে NFSশেয়ারগুলি মাউন্ট করে ( nfs-commonপ্যাকেজের অংশ ):
NAME
showmount - show mount information for an NFS server
SYNOPSIS
showmount [ -adehv ] [ --all ] [ --directories ] [ --exports ] [ --help ] [ --version ] [ host ]
অন্য বিকল্পটি কিছু হবে:
$ mount -l -t nfs | grep 'my mount point'
mountpointউপযোগ আপনাকে বলতে না করলে বিন্দু মাউন্ট রিমোটে পরিণত হয়। তদুপরি, দূরবর্তী ফাইল সিস্টেমগুলি এনএফএস ফাইল সিস্টেমের মধ্যে সীমাবদ্ধ নয়। শেষ অবধি mountpointমানসম্মত নয় ( এই তালিকায় নেই )।
mountpointএই ক্ষেত্রে এটি আদর্শ।
find . -type d -name nfs -exec mountpoint {} \; | grep not
'এনএফএস' নামক সমস্ত ফোল্ডার মাউন্ট করা থাকলে তা চেক করবে check
nfs।