Я новичок в написании сценариев ... Я могу делать очень простые вещи, но теперь мне нужна рука.
У меня есть локальная файловая система, которая будет монтироваться только тогда, когда мне нужно сделать резервную копию.
Я начинаю с этого.
#!/bin/bash
export MOUNT=/myfilesystem
if grep -qs $MOUNT /proc/mounts; then
echo "It's mounted."
else
echo "It's not mounted."; then
mount $MOUNT;
fi
Как я уже сказал, я очень прост в написании сценариев. Я слышал, что вы можете проверить статус mount
команды, посмотрев коды возврата.
RETURN CODES
mount has the following return codes (the bits can be ORed):
0 success
1 incorrect invocation or permissions
2 system error (out of memory, cannot fork, no more loop devices)
4 internal mount bug
8 user interrupt
16 problems writing or locking /etc/mtab
32 mount failure
64 some mount succeeded
Я не знаю, как это проверить. Любое руководство?
bash
shell-script
mount
maniat1k
источник
источник
; then
вашем сценарии смешно болтается .Ответы:
Вы можете проверить код состояния
mount
и большинство хорошо написанных исполняемых файлов с помощью специального параметра оболочки?
.От
man bash
:? Expands to the exit status of the most recently executed foreground pipeline.
После запуска
mount
команды, немедленное выполнениеecho $?
напечатает код состояния из предыдущей команды.Не все исполняемые файлы имеют четко определенные коды состояния. Как минимум, он должен завершиться с кодом успеха (0) или сбоя (1), но это не всегда так.
Чтобы расширить (и исправить) ваш пример сценария, я добавил
if
для ясности вложенную конструкцию. Это не единственный способ проверить код состояния и выполнить действие, но его легче всего читать при обучении.Для получения дополнительной информации о «Exit и Exit Status», вы можете обратиться к Расширенному Руководству по Bash-Scripting .
источник
$MOUNT
. Этот скрипт также сломается, если в файловой системе есть какой-либо символ, который подвергнется разделению слов (пробелы и т. Д.). Вы всегда должны цитировать свои расширения.Многие дистрибутивы Linux имеют
mountpoint
команду. Он может явно использоваться для проверки, является ли каталог точкой монтирования. Просто как это:источник
Еще один способ:
источник
findmnt
необходимо указывать этот параметр--source encfs
, в противном случае он всегда будет считать каталог подключенным, поскольку он возвращается к родительскому подключению.Самый простой способ, который не требует root:
или посмотреть, не установлен ли он:
источник
mount
команда не нуждается в корневой доступ,df
ориентирован на дисковое пространство не на точки монтирования ...Краткие заявления
Проверьте , установлено ли :
Проверьте , не установлено ли :
источник
Я пробовал с ниже сценария
Единственное, что вам нужно указать - это имя файловой системы.
источник