GNU/Linux >> Znalost Linux >  >> Linux

Zjistit, zda je souborový systém nebo oddíl připojen RO nebo RW pomocí skriptu Bash?

Řešení 1:

Pokud existuje souborový systém ro, tato malá jednolinka něco vyskočí.

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

Za předpokladu, že obvykle nemáte v mechanice souborový systém ro jako CD, je to dostačující pro některé základní věci typu monitorování a nevyžaduje změnu systému souborů pro zjištění aktuálního stavu. Také nepředpokládá váš typ systému souborů. Pokud chcete, aby se vaše CD nezapisovaly, vložte jej do grep -v iso9660.

Řešení 2:

Stará otázka, ale narazil jsem na ni při hledání stejné pomoci a zdá se, že jsem našel ještě jednodušší způsob bez nutnosti vytvářet soubor.

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

Samozřejmě, root-ro je ro připojený fs a root-rw je rw fs.

Řešení 3:

Pokud je souborový systém připojen, přesunul bych se do dočasného adresáře a pokusil se vytvořit soubor. Návratový kód vám řekne, zda je systém souborů pouze pro čtení nebo pro čtení a zápis za předpokladu, že systém souborů není plný (díky Willemu).

Řešení 4:

Právě jsem měl tento problém a toto jsou skutečné pasty ...

Podívejte se na /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

Pro informaci - Tyto dva oddíly se zobrazují jako připojené rw, když používáte pouze příkaz mount.

Řešení 5:

Na základě odpovědi flickerdfly ovlivněné komentářem od WhiteKnight

Vytvořte funkci detektoru jako mouchu.

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

použijte jej k určení, zda je cesta na fs pouze pro čtení

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

A po dokončení jej zlikvidujte

#dump temp function
unset -f is_readonly;

Linux
  1. Proč skript Bash nerozpozná aliasy?

  2. Bash skript k odstranění nejstaršího souboru ze složky?

  3. Přesměrujte standardní vstup dynamicky v bash skriptu

  1. Bash skript:špatný interpret

  2. Jak zahrnout soubor do skriptu bash shell

  3. bash skript připojí text k prvnímu řádku souboru

  1. Může být Bash skript připojen k souboru?

  2. Jak spustit bash skript přes absolutní cestu?

  3. Bash smyčka rozbalte skript zaheslovaného souboru