У меня есть файловая система tmpfs, смонтированная в определенном каталоге. Я хочу написать сценарий оболочки, чтобы проверить, смонтирована ли уже файловая система tmpfs в каталоге.
Сценарий оболочки, чтобы узнать, смонтирована ли уже файловая система
Ответы (7)
Вы можете проверить тип файловой системы.
$ stat -f -c '%T' / xfs $ stat -f -c '%T' /dev/shm tmpfs
Вы также можете проверить, является ли каталог точкой монтирования, сравнив его устройство с родительским.
$ stat -c '%D' / 901 $ stat -c '%D' /home fe01 $ stat -c '%D' /home/$USER fe01
Специально для этого есть инструмент: mountpoint(1)
if mountpoint -q "$directory" ; then
echo it is a mounted mountpoint
else
echo it is not a mounted mountpoint
fi
И вам даже не нужно царапать струны, чтобы сделать это!
Обратите внимание, что я нашел этот инструмент в пакете initscripts Debian. Насколько это доступно в других местах, я не могу комментировать.
mountpoint
является частью util-linux (в частности, частью sys-utils) и, вероятно, так или иначе доступен в большинстве дистрибутивов Linux. Однако он не является частью GNU и вряд ли доступен в системах, отличных от Linux.
- person sorpigal; 29.05.2013
Что-то вроде этого, хотя и хакерское, должно помочь:
FS_TO_CHECK="/dev" # For example... change this to suit your needs.
if grep -F " $FS_TO_CHECK " /proc/mounts > /dev/null; then
# Filesystem is mounted
else
# Filesystem is not mounted
fi
Я знаю, что этот поток устарел, но почему бы просто не использовать df и grep для требуемого пути к точке монтирования? то есть вот так:
df /full/path | grep -q /full/path
grep возвращает true, если смонтирован, и false, если нет. Итак, нам просто нужно проверить это следующим образом:
df /mnt/myUSBdisk | grep -q /mnt/myUSBdisk && echo "Mounted" || echo "Not mounted"
Очень просто...
df /tmp | grep -q tmpfs && echo "Shared Memory" || echo "Not Shared Memory
Или, что более важно, df /tmp | grep -q tmpfs && tmp=/tmp || tmp=/dev/shm
- person Colin Keenan; 01.10.2014
Вы можете использовать df
, попробуйте man df
.
df 'directory' | awk '{print $1, $6}'
даст вам что-то вроде:
Filesystem Mounted
/dev/sda5 'some_dir'
затем вы можете добавить проверку, совпадает ли каталог «some_dir» с «your_dir» и файловая система такая же, как у вас.
Проверьте /proc/mounts. Если вы выберете имя файловой системы и путь, который вы хотите смонтировать (возможно, даже определенную строку со всеми включенными параметрами), вы можете определить, смонтирована ли файловая система.
if [ "`grep "tmpfs /lib/init/rw tmpfs rw,nosuid,mode=755 0 0" /proc/mounts`" != "" ]
then
echo Mounted.
else
echo Not mounted.
fi
if grep ...
- скобки тоже не нужны.
- person Dennis Williamson; 19.11.2010
точка монтирования намного элегантнее и есть в sysvinit-tools CentOS 6+++