web-dev-qa-db-ja.com

ファイルシステムまたはパーティションがマウントされているかどうかを確認しますROまたはBashスクリプトを介してRWですか?

マウントされたファイルシステムが読み取り専用としてマウントされているか、読み取り/書き込みとしてマウントされているかを簡単に判別する方法はありますか? mountをパイプ処理することだけを考えていましたが、もっと簡単な方法があるのではないかと思いました。

38
Jake Wilson

Roファイルシステムが存在する場合、この小さなワンライナーは何かを飛び出します。

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

通常、ドライブにCDのようなroファイルシステムがない場合は、基本的な監視タイプのもので十分であり、現在の状態を見つけるためにファイルシステムを変更する必要はありません。また、ファイルシステムのタイプを想定していません。 CDを記録しないようにするには、それをgrep -v iso9660にパイプします。

53
flickerfly

古い質問ですが、同じヘルプを探してそれを見つけました。ファイルを作成する必要がなく、もっと簡単な方法が見つかったようです。

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

もちろん、root-roはroマウントされたfsであり、root-rwはrw fsです。

12
user156888

ファイルシステムがマウントされている場合は、一時ディレクトリにcdしてファイルを作成しようとします。ファイルシステムがいっぱいでない場合、リターンコードはファイルシステムが読み取り専用か読み取り/書き込みかを通知します(Willemに感謝)。

7
David Harris

私はこの問題を抱えていましたが、これらは本当のペーストです...

/ proc/mountsを見てください-

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

FYI-これら2つのパーティションは、mountコマンドを使用するだけでrwにマウントされていると表示されます。

4
Wayne

WhiteKnightからのコメントに影響された flickerdfly's answer に基づく

その場で検出機能を作成します。

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

それを使用して、パスが読み取り専用fsにあるかどうかを判断します

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

そして完了したらそれを処分します

#dump temp function
unset -f is_readonly;
3
unsynchronized

これが私の解決策です:

if findmnt -n -o OPTIONS ${YOUR_MOUNT_POINT} | egrep "^ro,|,ro,|,ro$"; then
  echo "Read only!"
fi
1

Antonioと同様に、/ proc/mountsを使用して同じことを行うことができます。 sda4の代わりに独自のドライブを使用します。

cat/proc/mounts | grep/dev/sda4 | awk '{print substr($ 4,1,2)}'

0
randyman99

たとえば、ルートパーティションが読み取り専用モードになっているかどうかを確認するには:

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