GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bestimmen Sie, ob das Dateisystem oder die Partition RO oder RW über Bash Script gemountet ist?

Lösung 1:

Dieser kleine Einzeiler wird etwas herausspringen, wenn ein ro-Dateisystem vorhanden ist.

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

Vorausgesetzt, Sie haben normalerweise kein ro-Dateisystem wie eine CD im Laufwerk, reicht es für einige grundlegende Überwachungsaufgaben aus und erfordert keine Änderung des Dateisystems, um den aktuellen Status zu ermitteln. Es geht auch nicht von Ihrem Dateisystemtyp aus. Geben Sie es in grep -v iso9660 ein, wenn Sie Ihre CDs aus dem Datensatz heraushalten möchten.

Lösung 2:

Alte Frage, aber ich bin auf der Suche nach derselben Hilfe darauf gestoßen und es scheint, als hätte ich einen noch einfacheren Weg gefunden, ohne dass eine Datei erstellt werden muss.

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

Natürlich ist root-ro ein ro gemountetes fs und root-rw ist ein rw fs.

Lösung 3:

Wenn das Dateisystem gemountet ist, würde ich in ein temporäres Verzeichnis wechseln und versuchen, eine Datei zu erstellen. Der Rückgabecode sagt Ihnen, ob das Dateisystem Read-Only oder Read-Write ist, vorausgesetzt, dass das Dateisystem nicht voll ist (danke Willem).

Lösung 4:

Ich hatte gerade dieses Problem und das sind echte Pasten ...

Werfen Sie einen Blick auf /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 - Diese beiden Partitionen werden als rw gemountet angezeigt, wenn nur der Mount-Befehl verwendet wird.

Lösung 5:

Basierend auf der Antwort einer Flimmerfliege, beeinflusst durch einen Kommentar von WhiteKnight

Erstellen Sie eine Detektorfunktion im Handumdrehen.

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

verwenden Sie es, um festzustellen, ob sich ein Pfad auf einem schreibgeschützten fs befindet

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

Und entsorgen Sie es, wenn Sie fertig sind

#dump temp function
unset -f is_readonly;

Linux
  1. Warum erkennt das Bash-Skript keine Aliase?

  2. Bash-Skript zum Entfernen der ältesten Datei aus einem Ordner?

  3. Woher weiß ich den Namen der Skriptdatei in einem Bash-Skript?

  4. Standardeingabe dynamisch in einem Bash-Skript umleiten

  5. Bash-Skript:schlechter Interpreter

35 Bash-Skriptbeispiele

Wie kann ich feststellen, ob im Dateisystem in .net zwischen Groß- und Kleinschreibung unterschieden wird?

Wie kann man Bash-Skripte in Vim hervorheben?

Bash-Skript fügt Text an die erste Zeile einer Datei an

Vergleichen Sie md5-Summen im Bash-Skript

Wie man in einem Bash-Skript nach Unicode sucht