Solusi 1:
One-liner kecil ini akan memunculkan sesuatu jika ada sistem file ro.
grep "[[:space:]]ro[[:space:],]" /proc/mounts
Dengan asumsi Anda biasanya tidak memiliki sistem file ro seperti CD di drive, itu cukup untuk beberapa jenis pemantauan dasar dan tidak perlu mengubah sistem file untuk menemukan status saat ini. Itu juga tidak mengasumsikan tipe sistem file Anda. Masukkan ke dalam grep -v iso9660 jika Anda ingin menyimpan CD Anda dari catatan.
Solusi 2:
Pertanyaan lama, tetapi saya menemukannya mencari bantuan yang sama dan sepertinya menemukan cara yang lebih mudah tanpa perlu membuat file.
[ -w /root-rw ] && echo "rw" || echo "ro"
rw
[ -w /root-ro ] && echo "rw" || echo "ro"
ro
Tentu saja, root-ro adalah ro mount fs dan root-rw adalah rw fs.
Solusi 3:
Jika sistem file sudah terpasang, saya akan melakukan cd ke direktori sementara dan mencoba membuat file. Kode pengembalian akan memberi tahu Anda jika sistem file Read-Only atau Read-Write asalkan sistem file tidak penuh (terima kasih Willem).
Solusi 4:
Saya baru saja mengalami masalah ini dan ini adalah pasta asli ...
Lihatlah /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 - Kedua partisi ini ditampilkan sebagai sedang di-mount rw ketika hanya menggunakan perintah mount.
Solusi 5:
Berdasarkan jawaban flickerdfly, dipengaruhi oleh komentar dari WhiteKnight
Buat fungsi pendeteksi lalat.
eval "function is_readonly () {
$( grep -P "\sro[\s,]" /proc/mounts | awk '{print "if echo $1 | grep -q \""$2"\"; then return 0;fi"}' )
return 1;}";
gunakan untuk menentukan apakah jalur ada di fs hanya baca
is_readonly /path/to/file/on/read/only/fs && echo "sorry. can't delete that"
Dan buang setelah selesai
#dump temp function
unset -f is_readonly;