Это - абсолютно зависимый распределения. Вы действительно испытываете необходимость для обнаружения дистрибутива для записи правильно соответствующего init сценария.
Можно также следовать за LSB (Основа Стандарта Linux) спецификация и надеяться, что рассматриваемый дистрибутив сделал также. Текущая спецификация диктует, что стандарт init сценарий функционирует быть доступным как /lib/lsb/init-functions
(см. документы здесь). На Fedora и других связанных с Red Hat дистрибутивах, это обеспечивается redhat-lsb
пакет, который является дополнительным.
Так, действительно необходимо выяснить то, для чего Вы нацелены.Прошу прощения.
Существует еще одно решение о том, как можно сделать это. Можно создать файл в файловой системе NTFS и затем проверить, существует ли этот файл. В Вашем случае другие решения, вероятно, лучше. Но если необходимо проверить, смонтирована ли файловая система NFS или SMB, иногда лучше проверить на файл, потому что Вы хотите быть уверенными, что это не только смонтировано, но также доступное. Затем Вы сделали бы это как это:
if [ ! -f /your/mounted/fs/mount-check.txt ];
then
echo "Here you have to put your mount command."
fi
Существует много способов проверить, является ли конкретный каталог точкой монтирования, например (в соответствии с 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
перезагружать его конфигурацию на Вашем распределении).Можно проверить то, что смонтировано путем издания плоскости 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
Использовать mountpoint
команда:
mountpoint -q $MOUNT_POINT || mount $DEVICE_WITH_NTFS_FILESYSTEM $MOUNT_POINT
Последняя часть (после того, как ||
) выполняется, только если первая часть была ложью (т.е. точка монтирования не существовала).