উত্তর:
স্টিফেন যেমন বলেছিলেন যে "এর কোনও সর্বজনীন ইউনিক্সের উত্তর নেই"।
আমার প্রশ্নের সেরা সমাধানটি আমি খুঁজে পেয়েছি:
df -P -T /my/path/to/folder | tail -n +2 | awk '{print $2}'
ফাইল সিস্টেমের ধরণটি প্রদান করবে, উদাহরণস্বরূপ: nfs
বা ext3
।
-T
বিকল্প নয় মান , তাই এটি অন্য ইউনিক্স / লিনাক্স অপারেটিং সিস্টেমে কাজ নাও করতে পারে ...
গিলসের নীচে মন্তব্য অনুসারে : "এটি কোনও এমবেডেড লিনাক্সে কাজ করে না, তবে ব্যাসিবক্স, * বিএসডি ইত্যাদিতে নয়" "
/etc/mtab
বা ফলাফল দেখার ফলাফল আরও কিছু ক্ষেত্রে করতে পারে। mount
df
/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
।