Действительно ли это напишет сценарий безопасно (ООН), монтируют раздел NTFS для своп-файла?

Я использую персистентный живой USB под управлением Ubuntu 18.04.3 LTS Бионический Бобр, поскольку разделение моего жесткого диска является очень трудным. Играя в Паровые игры, мне нужен своп-файл. Со справкой от @malte-skoruppa, я теперь использую своп-файл на разделе NTFS на внутреннем жестком диске.

Я теперь хотел бы автоматизировать процесс с помощью своего первого сценария Bash, на основе ПРАКТИЧЕСКОГО РУКОВОДСТВА. Можно ли видеть какие-либо дефекты в этом сценарии?:

#!/bin/bash
echo "Mounting partition..."
sudo mount -U 80EA3F58EA3F49A4 /media/ubuntu/LENOVO
echo "Opening swapfile..."
sudo swapon /media/ubuntu/LENOVO/swapfile.img
steam steam://open/minigameslist
echo "Closing swapfile..."
sudo swapoff /media/ubuntu/LENOVO/swapfile.img
echo "Unmounting partition..."
sudo umount -l /media/ubuntu/LENOVO
echo "Mission accomplished!"

Я особенно обеспокоен umount -l опция. В ПРАКТИЧЕСКОМ РУКОВОДСТВЕ говорится, что оно размонтирует раздел, после того как это не занято, но в старом ответе Переполнения стека говорится, что это размонтирования силы раздел, который НЕ является тем, что я хочу сделать.

1
задан 15 November 2019 в 18:45

1 ответ

Так как я знаю, что Вы плохо знакомы с Ubuntu, вот несколько замечаний общего порядка.

1. Помещенный, что раздел в Вашем /etc/fstab

Прежде всего, в Вашем сценарии Вы используете строку sudo mount -U 80EA3F58EA3F49A4 /media/ubuntu/LENOVO для монтирования раздела NTFS. Я предложил бы добавить, что раздел к Вашему /etc/fstab и отображает его на UID Вашего раздела там. Так как Вы находитесь в однопользовательской системе, можно хотеть иметь запись, подобную этому в Вашем /etc/fstab:

UUID=80EA3F58EA3F49A4 /media/ubuntu/LENOVO ntfs rw,exec,uid=1000,gid=1000,umask=0002,nls=utf8,noauto  0  0

Самое главное, это говорит системе связывать точку монтирования /media/ubuntu/LENOVO с UID 80EA3F58EA3F49A4. Тот путь, в будущем (и таким образом в Вашем сценарии) можно просто использовать sudo mount /media/ubuntu/LENOVO вместо sudo mount -U 80EA3F58EA3F49A4 /media/ubuntu/LENOVO. Если UID изменяется в будущем (потому что Вы переформатировали раздел), лучше иметь только одно центральное место, /etc/fstab, отредактировать, а не 20 сценариев, у Вас может быть ложь вокруг.

Это также монтирует файловую систему с различными общими опциями для разделов NTFS: режим чтения-записи (rw), разрешите выполнение двоичных файлов (exec), сделайте все файлы, и каталоги в файловой системе принадлежат пользователю 1000 и группа 1000 (uid=1000,gid=1000) (это - Ваш обычный пользователь), установите биты полномочий для всех файлов и каталогов к 775 (umask=0002), установите набор символов для имен файлов к UTF-8 (nls=utf8) и не монтируйте раздел автоматически (noauto). Обратитесь к [1 132], fstab (5) и монтируются (8) для получения дополнительной информации. Я лично нахожу удобным в моей однопользовательской системе смочь получить доступ ко всем файлам на моих разделах NTFS, не имея необходимость использовать sudo, но конечно Ваш пробег может варьироваться.

можно также хотеть отбросить noauto опция. Затем раздел будет смонтирован каждый раз, когда команда mount -a выполняется, и, в частности, во время начальной загрузки (и таким образом, это обычно монтировалось бы все время). Затем Вы не должны были бы даже использовать mount и umount команды в Вашем сценарии вообще, но я не знаю, хотите ли Вы это.

2. Не используйте umount с [1 123]

От [1 134] umount (8) :

рекомендуемый пример использования для umount-l должен предотвратить, зависает на завершении работы из-за недостижимого сетевого ресурса, где нормальный umount зависнет из-за побежденного сервера или разделения сети.

, Таким образом, эта опция по крайней мере довольно необычна для использования в случае.

, Работаете ли Вы umount с или без [1 125], раздел не будет размонтирован силой (существует -f опция для этого). Скорее когда Вы не используете -l, и раздел все еще занят, размонтирование просто приведет к сбою и возвратит сообщение об ошибке; когда использование -l и раздел все еще занято, это будет отсоединено от файловой системы hiearchy теперь (значение, что Вы не можете больше получать доступ к нему), но незаконченные операции ввода-вывода будут тихо завершены в фоновом режиме.

С тех пор не должно быть никаких незаконченных операций ввода-вывода после выполнения swapoff не используя -l Вы, по крайней мере, заметили бы, нечетно ли что-то, потому что, если бы раздел неожиданно тих занятый затем, команда размонтирования произвела бы сообщение об ошибке.

3. Добавьте обработку ошибок

, Вы выполняете все команды в последовательности, но не проверяете, работала ли предыдущая команда. Так, например, если монтирующиеся сбои, то эти swapon команда будет, тем не менее, предпринята, но сбой и затем Ваша игра запустятся даже при том, что подкачка не была активирована.

Попытка это:

#!/bin/bash

echo "Mounting partition..."
sudo mount /media/ubuntu/LENOVO

if [ $? -ne 0 ]; then
    echo "Could not mount partition, mission aborted." >&2
    exit 1
fi

echo "Opening swapfile..."
sudo swapon /media/ubuntu/LENOVO/swapfile.img

if [ $? -ne 0 ]; then
    echo "Could not activate swap, mission aborted." >&2
    exit 1
fi

steam steam://open/minigameslist

echo "Closing swapfile..."
sudo swapoff /media/ubuntu/LENOVO/swapfile.img

echo "Unmounting partition..."
sudo umount /media/ubuntu/LENOVO

echo "Mission accomplished!"
1
ответ дан 7 December 2019 в 14:56

Другие вопросы по тегам:

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