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

Linux – Wie testet man, ob ein Blockgerät von /sys oder /proc aus schreibgeschützt ist?

Auf einem CentOS6-System habe ich /dev/block/sr0 (schreibgeschützt) und /dev/block/sda (lesen Schreiben). Wie kann ich programmgesteuert herausfinden, welche Geräte schreibgeschützt sind? Es gibt ein ro Datei darin, aber es ist ‚0‘ für beide Geräte.

Es gibt einige Hacks, die ich verwenden könnte (vergleiche die Namen ^sr vs ^sd , suchen Sie nach cdrom Eigentümer des Geräteknotens), aber ich hätte gerne eine generische Lösung.

Akzeptierte Antwort:

Wenn /sys/block/xxx/ro 1 ist, dann garantiert der Kernel, dass es schreibgeschützt ist

$ sudo losetup /dev/loop0 a
$ sudo losetup -r /dev/loop1 b
$ cat /sys/block/loop0/ro
0
$ cat /sys/block/loop1/ro
1

Wenn dies nicht der Fall ist, lässt der Kernel möglicherweise zu, dass Sie versuchen, darauf zu schreiben, aber das Schreiben wird möglicherweise auf einer niedrigeren Ebene blockiert.

Bei CDs/DVDs können Sie mit cdrdao disk-info den Medientyp (schreibgeschützt, beschreibbar, wiederbeschreibbar, offene Sitzung…) ermitteln .

Jetzt ist das Gerät möglicherweise beschreibbar, aber Sie haben möglicherweise keine Schreibberechtigung für die Gerätedatei, aber das ist eine andere Geschichte und kann leicht mit [ -w "$dev" ] überprüft werden


Linux
  1. Linux – Wie liest man unter Linux aus /proc/$pid/mem?

  2. Wie portabel sind /dev/stdin, /dev/stdout und /dev/stderr?

  3. Linux – Der Unterschied zwischen /sys/block/sda1/stat und /sys/block/xvda1/stat?

  4. Wie erhalte ich den Pfad eines Prozesses in Unix / Linux

  5. Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

/proc/cpuinfo- und /proc/meminfo-Dateien unter Linux

So ordnen Sie /dev/sdX- und /dev/mapper/mpathY-Geräte vom /dev/dm-Z-Gerät zu

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen

Wie finde ich heraus, aus welchem ​​Ordner ein Prozess läuft?

Wie bestimmt man die maximale CPU-Geschwindigkeit eines Prozessors in Linux?

Sollten Websites gemäß der empfohlenen Verwendung in /var/ oder /usr/ leben?