Обнаружьте, если (NTFS) диск смонтирован или нет. Если не затем монтируют его

Это - абсолютно зависимый распределения. Вы действительно испытываете необходимость для обнаружения дистрибутива для записи правильно соответствующего init сценария.

Можно также следовать за LSB (Основа Стандарта Linux) спецификация и надеяться, что рассматриваемый дистрибутив сделал также. Текущая спецификация диктует, что стандарт init сценарий функционирует быть доступным как /lib/lsb/init-functions (см. документы здесь). На Fedora и других связанных с Red Hat дистрибутивах, это обеспечивается redhat-lsb пакет, который является дополнительным.

Так, действительно необходимо выяснить то, для чего Вы нацелены.Прошу прощения.

5
21.05.2011, 17:30
4 ответа

Существует еще одно решение о том, как можно сделать это. Можно создать файл в файловой системе NTFS и затем проверить, существует ли этот файл. В Вашем случае другие решения, вероятно, лучше. Но если необходимо проверить, смонтирована ли файловая система NFS или SMB, иногда лучше проверить на файл, потому что Вы хотите быть уверенными, что это не только смонтировано, но также доступное. Затем Вы сделали бы это как это:

if [ ! -f /your/mounted/fs/mount-check.txt ];
then
    echo "Here you have to put your mount command."
fi
2
27.01.2020, 20:35

Существует много способов проверить, является ли конкретный каталог точкой монтирования, например (в соответствии с Linux) регистрация в списке точки монтирования

if ! </proc/mounts awk '$2 == "/mount/point" {exit(0)} END {exit(1)}'; then
  mount /mount/point
fi

или (портативно) проверяя, является ли точка монтирования файловой системы пути самостоятельно

if ! df -P /mount/point | grep -q '/mount/point$'; then
  mount /mount/point
fi

Если возможная точка монтирования может быть символьной ссылкой, то посмотрите, находится ли тот каталог в другой файловой системе от ее родителя:

if df -P /mount/point/. /mount/point/.. | {
      read -r _; read -r dev1 _; read -r dev2 _
      [ "$dev1" = "$dev2" ]
    }; then
  mount /mount/point
fi

Альтернативный подход должен использовать утилиту автоматического монтирования для автоматического монтирования каталога, когда к этому получают доступ. Например, на Linux, можно использовать autofs:

  • Не прокомментируйте строку в /etc/auto.master это читает /misc /etc/auto.misc
  • В /etc/auto.misc, добавить windows_stuff -fstype=ntfs :/dev/sdz99 (замена sdz99 разделом Вы хотите смонтироваться),
  • Создайте символьную ссылку /home/user/folder/misc/windows_stuff
  • Выполненный /etc/init.d/autofs reload (или независимо от того, что говорит autofs перезагружать его конфигурацию на Вашем распределении).
3
27.01.2020, 20:35

Можно проверить то, что смонтировано путем издания плоскости mount команда. Это также говорит Вам "исходное устройство" каждой точки монтирования.

Если Вы используете устройства в /dev/disk/by-id для монтирования тома NTFS затем у Вас будет фиксированное имя, по которому можно проверить в сценариях, в противоположность /dev/sd* имена, которые могут измениться между перезагрузками и управлять событиями подключения.

Таким образом, что-то вроде этого может проверить на присутствие подсоединенного внешнего диска в bash:

if mount | grep -q "/dev/disk/by-id/$DEVICE_WITH_NTFS_FILESYSTEM"; then
 # device is mounted
 ;; # do nothing
else
 # device is not mounted, let's mount it
 mount $DEVICE_WITH_NTFS_FILESYSTEM $MOUNT_POINT
 fi
2
27.01.2020, 20:35

Использовать mountpoint команда:

mountpoint -q $MOUNT_POINT || mount $DEVICE_WITH_NTFS_FILESYSTEM $MOUNT_POINT

Последняя часть (после того, как ||) выполняется, только если первая часть была ложью (т.е. точка монтирования не существовала).

3
27.01.2020, 20:35

Теги

Похожие вопросы