ফাইল সিস্টেম বা পার্টিশনটি বাশ স্ক্রিপ্টের মাধ্যমে আরও বা আরডাব্লু মাউন্ট করা থাকে কিনা তা নির্ধারণ করুন?


37

মাউন্ট করা ফাইল সিস্টেমটি কেবল পঠনযোগ্য বা পঠন-লিখন হিসাবে মাউন্ট করা আছে কিনা তা নির্ধারণ করার কোনও সহজ উপায় আছে? আমি কেবল পাইপ দেওয়ার জন্য ভাবছিলাম mountতবে আমি ভেবেছিলাম এর চেয়ে সহজ উপায় আর হতে পারে।


1
এর জন্য আদর্শ সিস্টেম কলটি statvfsহ'ল যা অন্যান্য জিনিসের মধ্যে একটি পঠনযোগ্য মাউন্টকে নির্দেশ করে একটি পতাকা সহ একটি পতাকা ক্ষেত্র প্রদান করে। দুর্ভাগ্যক্রমে আমি সরাসরি এটি করার জন্য শেল কমান্ড জানি না। আমি ব্যবহার করতাম stat -f, তবে এই কমান্ডটি পতাকা ব্যতীত সমস্ত কিছু দেখায়।
ক্যাস্পার্ড

2
নোট: যেমন @Travis ক্যাম্পবেল সহায়কভাবে তার মন্তব্যে ব্যাখ্যা serverfault.com/a/277449/236916 , mountসবসময় কি তোমাদেরকে বলিনি যে আপনি কি চাই: ভাষান্তর, এটা সার্চ থেকে /etc/mtab, ডেটার একটি ক্যাশে সংস্করণ যা, ও মে কিছু ক্ষেত্রে পুরানো হতে। তথ্যটি আপনি /proc/mountsযা চান তা হ'ল।
mwfearnley

উত্তর:


50

এই ছোট্ট একটি-লাইনার কোনও রো ফাইল সিস্টেম উপস্থিত থাকলে কিছু পপ-আউট করবে।

grep "[[:space:]]ro[[:space:],]" /proc/mounts 

ধরে নিই যে ড্রাইভে আপনার কাছে কোনও সিওর মতো একটি রো ফাইল সিস্টেম নেই, এটি কিছু বেসিক মনিটরিং টাইপ স্টাফের জন্য যথেষ্ট এবং বর্তমান অবস্থাটি খুঁজতে ফাইল সিস্টেম পরিবর্তন করার প্রয়োজন নেই। এটি আপনার ফাইল সিস্টেমের ধরণও গ্রহণ করে না। আপনি যদি নিজের সিডিগুলি রেকর্ডের বাইরে রাখতে চান তবে এটিকে গ্রেপ -v iso9660 তে পাইপ করুন।


1
আমাকে grep -P "\sro[\s,]" /proc/mountsবাgrep " ro[ ,]" /proc/mounts
হোয়াইটনাট

3
থ্যাঙ্কইয়ু থেকে "চেষ্টা করে একটি ফাইল তৈরি করুন" এর চেয়ে এটি আরও ভাল উত্তর।
ভ্যাগনার

এটি কি কেবলমাত্র সেই বিকল্পগুলিই বলে না যা মাউন্ট হিসাবে ব্যবহৃত হয়েছিল, বর্তমান অবস্থা নয়? উদাহরণস্বরূপ বিকল্পগুলির সাথে একটি এন্ট্রি ext4 rw,noatime,nobarrier,errors=remount-ro,data=ordered 0 0একটি ত্রুটির ঘটনায় কেবল পঠিত হিসাবে পুনঃমাউন্ট হিসাবে সেট করা আছে, সুতরাং যাচাই না করেই mountআপনি জানেন না যে এই পুনঃস্থাপনটি ঘটেছে কিনা, তাই যদি এটি বাস্তবে থাকে ro
ওয়াল্ফ

এটা আমার অভিজ্ঞতা ছিল না।
ফ্লিকফ্লিফলি

3
আমি আজ একটি ছিল। এটি রো-তে মূল ফাইল-সিস্টেম, তবে এটি শুরু হওয়ার পরে এটি rw হয়েছিল। $ grep "\sro[\s,]" /proc/mountsআউটপুট:/dev/mapper/root / ext4 ro,relatime,errors=remount-ro,user_xattr,acl,barrier=1,data=ordered 0 0
ফ্লিকফ্লিফ্লি

11

পুরানো প্রশ্ন, তবে আমি একই সাহায্যের সন্ধানে এটি পেরিয়ে এসেছি এবং মনে হচ্ছে ফাইল তৈরি করার প্রয়োজন ছাড়াই আরও সহজ উপায় খুঁজে পেয়েছি।

    [ -w /root-rw ] && echo "rw" || echo "ro"
    rw
    [ -w /root-ro ] && echo "rw" || echo "ro"
    ro

অবশ্যই, রুট-রো হ'ল মাউন্ট করা fs এবং রুট-আরডব্লু হল rw fs।


3
এটি ফাইল সিস্টেমের অনুমতি পরীক্ষা করে দেখে মনে হচ্ছে, তবে স্থিতি নয়।
রবার্ট ক্যালহাউন

1
সত্য, তবে এটি খুব সহজ এবং কিছু ক্ষেত্রে (যেমন আমার) কাজ করতে পারে।
ইয়াজো

থেকে man dashজন্য -wবিকল্প - 'ফাইল শুধুমাত্র পাঠযোগ্য ফাইল সিস্টেম এই পরীক্ষাটি সত্য ইঙ্গিত এমনকি যদি উপর লিখনযোগ্য নয়।' আফাইক অন্যান্য শেলগুলির জন্য এটি একই।
গ্রীম

7

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


1
যদি আপনি কেবল ফাইলসাইম মাউন্ট করা হয় তা পরীক্ষা করে দেখেন, মাউন্ট থেকে আউটপুট পাওয়া যথেষ্ট হবে। তবে আমাকে একমত হতে হবে, এটি যাচাই করার আরও বিস্তৃত উপায়। মাউন্টগুলি এমন প্রতিবেদন করতে পারে যে এটি পড়তে / লেখার জন্য মাউন্ট করা থাকে তবে এটি কেবল পঠনযোগ্য। এর সাধারণ উদাহরণটি কোনও ডিভাইসে প্রচুর পরিমাণে এসসিএসআই ত্রুটি যার ফলে এটি কেবল পঠনযোগ্য হয়ে গিয়ে নিজেকে রক্ষা করে। একটি ফাইল তৈরি করা কোনও সন্দেহ ছাড়াই কেবল পঠন + লেখার / পঠনযোগ্য যাচাই করবে।
অ্যালেক্স

1
এটি পরিপাটি হবে:touch afile && { rm afile; echo "read-write"; } || echo "read-only"
গ্লেন জ্যাকম্যান

লিখিত হিসাবে স্ক্রিপ্টলে একটি রেসের শর্ত রয়েছে। আমি mktemp -p /filesystem/of/interest/ফাইল এবং ফাইলের নাম তৈরি করতে কেবল 'আফাইল' ব্যবহারের পরিবর্তে ফাইল = ব্যবহার করব । সেরা
রিক স্নাইডার

1
এটি ভুলভাবে একটি পূর্ণ ফাইল সিস্টেমকে কেবল পঠনযোগ্য হিসাবে রিপোর্ট করবে।
উইলিম

@ ডেভিড, এটি সত্যিকারের সমাধানের পরিবর্তে স্টপগ্যাপ হ্যাকের মতো বলে মনে হচ্ছে।
পেসারিয়ার

4

আমার কেবল এই সমস্যাটি ছিল এবং এগুলি সত্যই আটকানো ...

/ Proc / মাউন্টগুলি একবার দেখুন -

egrep " ro,|,ro " /proc/mounts 
/dev/sda3 / ext4 ro,seclabel,relatime,barrier=1,data=ordered 0 0    
/dev/sda5 /var ext4 ro,seclabel,relatime,barrier=1,data=ordered 0 0

এফওয়াইআই - এই দুটি পার্টিশনটি মাউন্ট কমান্ড ব্যবহার করার সময় rw হিসাবে মাউন্ট করা হিসাবে দেখায়।


2
যদি 'রো' একমাত্র মাউন্ট বিকল্প হয় তবে এটি কাজ করবে না
উইলিয়াম

3

একটি ফ্লিকারডফ্লাইয়ের উত্তরের ভিত্তিতে , হোয়াইটকাইটের একটি মন্তব্য দ্বারা প্রভাবিত

মাছি একটি আবিষ্কারক ফাংশন তৈরি করুন।

eval "function is_readonly () {
          $( grep -P "\sro[\s,]" /proc/mounts | awk '{print "if echo $1 | grep -q \""$2"\"; then return 0;fi"}' )
      return 1;}";    

কোনও পাথ কেবল পঠনযোগ্য এফএসে রয়েছে কিনা তা নির্ধারণ করতে এটি ব্যবহার করুন

is_readonly /path/to/file/on/read/only/fs && echo "sorry. can't delete that"

এবং এটি হয়ে গেলে তা নিষ্পত্তি করুন

#dump temp function
unset -f is_readonly;


0

উদাহরণস্বরূপ, মূল পার্টিশনটি কেবল পঠন মোডে রয়েছে কিনা তা পরীক্ষা করতে:

if [[ ! -z `mount | grep "on / type ext3 (ro,"` ]]
then
   echo "It's in read-only mode"
fi

2
এটি সব ক্ষেত্রে ধরা দেয় না। / মাউস / বর্তমানে মাউন্ট করা ফাইল সিস্টেমগুলির (এবং তাদের বর্তমান বিকল্পগুলি) ক্যাশেড সংস্করণটির জন্য / ইত্যাদি / এমটিএবে সন্ধান করবে। যদি / কোনও কারণে আর-র পুনঃমাউন্ট পরিচালনা করে, এমটিএব সঠিকভাবে আপডেট করা যায় না, তাই / rw এখনও উপস্থিত হতে পারে। / proc / মাউন্টগুলি সর্বদা সঠিক মানটি প্রদর্শন করা উচিত।
ট্র্যাভিস ক্যাম্পবেল

1
আমি / proc / মাউন্ট ব্যবহারের প্রয়োজনের সাথে একমত আমি মনে করি যে এই পরীক্ষাটি শেল (বাশিয়ান যেহেতু ওপেন জিজ্ঞাসা করে) ফাংশনে হ্রাস করা উচিত যা নিশ্চিত করে যে স্ট্রিংটি রেফারেন্স করা হচ্ছে অন্য কোনও পথের সাবস্ট্রিং নয়।
স্কেপেরেন

0

অ্যান্টোনিওর মতো, আপনি একই জিনিসটি করতে / proc / মাউন্টগুলি ব্যবহার করতে পারেন। Sda4 এর জায়গায় নিজের ড্রাইভ ব্যবহার করুন।

বিড়াল / proc / মাউন্টস | গ্রেপ / দেব / এসডিএ 4 | awk '{মুদ্রণ সাবস্ট্রিট ($ 4,1,2)}'

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