マウントされたファイルシステムが読み取り専用としてマウントされているか、読み取り/書き込みとしてマウントされているかを簡単に判別する方法はありますか? mount
をパイプ処理することだけを考えていましたが、もっと簡単な方法があるのではないかと思いました。
Roファイルシステムが存在する場合、この小さなワンライナーは何かを飛び出します。
grep "[[:space:]]ro[[:space:],]" /proc/mounts
通常、ドライブにCDのようなroファイルシステムがない場合は、基本的な監視タイプのもので十分であり、現在の状態を見つけるためにファイルシステムを変更する必要はありません。また、ファイルシステムのタイプを想定していません。 CDを記録しないようにするには、それをgrep -v iso9660にパイプします。
古い質問ですが、同じヘルプを探してそれを見つけました。ファイルを作成する必要がなく、もっと簡単な方法が見つかったようです。
[ -w /root-rw ] && echo "rw" || echo "ro"
rw
[ -w /root-ro ] && echo "rw" || echo "ro"
ro
もちろん、root-roはroマウントされたfsであり、root-rwはrw fsです。
ファイルシステムがマウントされている場合は、一時ディレクトリにcdしてファイルを作成しようとします。ファイルシステムがいっぱいでない場合、リターンコードはファイルシステムが読み取り専用か読み取り/書き込みかを通知します(Willemに感謝)。
私はこの問題を抱えていましたが、これらは本当のペーストです...
/ 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にマウントされていると表示されます。
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;
これが私の解決策です:
if findmnt -n -o OPTIONS ${YOUR_MOUNT_POINT} | egrep "^ro,|,ro,|,ro$"; then
echo "Read only!"
fi
Antonioと同様に、/ proc/mountsを使用して同じことを行うことができます。 sda4の代わりに独自のドライブを使用します。
cat/proc/mounts | grep/dev/sda4 | awk '{print substr($ 4,1,2)}'
たとえば、ルートパーティションが読み取り専用モードになっているかどうかを確認するには:
if [[ ! -z `mount | grep "on / type ext3 (ro,"` ]]
then
echo "It's in read-only mode"
fi