Определить, смонтирована ли файловая система или раздел RO или RW через Bash Script?
Есть ли простой способ определить, смонтирована ли файловая система как только для чтения или для чтения-записи? Я думал просто трубку mount
но я подумал, что может быть проще.
9 ответов
Эта маленькая однострочная строка что-то выскакивает, если существует файловая система ro.
grep "[[:space:]]ro[[:space:],]" /proc/mounts
Предполагая, что у вас обычно нет файловой системы ro, такой как компакт-диск в приводе, этого достаточно для некоторых базовых типов мониторинга и не требует изменения файловой системы, чтобы найти текущее состояние. Это также не предполагает ваш тип файловой системы. Отправьте его в grep -v iso9660, если вы хотите, чтобы ваши CD не записывались.
Старый вопрос, но я наткнулся на него, ища ту же помощь, и кажется, что нашел еще более простой способ без необходимости создавать файл.
[ -w /root-rw ] && echo "rw" || echo "ro"
rw
[ -w /root-ro ] && echo "rw" || echo "ro"
ro
Конечно, root-ro - это смонтированный ros, а root-rw - это rw fs.
Если файловая система смонтирована, я бы перешел во временный каталог и попытался создать файл. Код возврата сообщит вам, если файловая система доступна только для чтения или для чтения и записи, при условии, что файловая система не заполнена (спасибо Виллему).
У меня просто была эта проблема, и это настоящие пасты...
Посмотрите на /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
К вашему сведению - эти два раздела отображаются как смонтированные rw только при использовании команды mount.
Основано на ответе flickerdfly, под влиянием комментария от WhiteKnight
Создать детектор функции мухи.
eval "function is_readonly () {
$( grep -P "\sro[\s,]" /proc/mounts | awk '{print "if echo $1 | grep -q \""$2"\"; then return 0;fi"}' )
return 1;}";
используйте его, чтобы определить, находится ли путь только для чтения
is_readonly /path/to/file/on/read/only/fs && echo "sorry. can't delete that"
И избавиться от него, когда закончите
#dump temp function
unset -f is_readonly;
Вот мое решение:
if findmnt ${YOUR_MOUNT_POINT} | awk '{print $4}' | grep "ro,"; then
echo "Read only!"
fi
Например, чтобы проверить, находится ли корневой раздел в режиме только для чтения:
if [[ ! -z `mount | grep "on / type ext3 (ro,"` ]]
then
echo "It's in read-only mode"
fi
Подобно Антонио, вы можете использовать /proc/mounts, чтобы сделать то же самое. Используйте свой собственный диск вместо sda4.
cat /proc/mounts | grep / dev / sda4 | awk '{print substr ($ 4,1,2)}'
Ubuntu перешла на Snap-пакеты, которые возвращают множество результатов /snap/$package. Итак, моя обновленная команда выглядит следующим образом:
grep "[[:space:]]ro[[:space:],]" /proc/mounts | grep -v /snap | grep -v tmpfs