Как вывести список разделов диска, когда они размонтированы? И как смонтировать их через терминал?
Список Размонтированных Разделов
Чтобы обратиться к списку части размонтированных разделов, существует несколько способов - lsblk
, fdisk
, parted
, blkid
.
$ lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 111.8G 0 disk └─sda1 8:1 0 111.8G 0 part /sdb 8:16 0 232.9G 0 disk ├─sdb1 8:17 0 1.5G 0 part ├─sdb2 8:18 0 138.6G 0 part /media/WINDOWS├─sdb3 8:19 0 8.1G 0 part ├─sdb4 8:20 0 1K 0 part ├─sdb5 8:21 0 68.5G 0 part └─sdb6 8:22 0 5.8G 0 part loop0 7:0 0 100G 0 loop └─docker-8:1-1589297-pool (dm-0) 252:0 0 100G 0 dm loop1 7:1 0 2G 0 loop └─docker-8:1-1589297-pool (dm-0) 252:0 0 100G 0 dm $ sudo fdisk -l[sudo] password for xieerqi: Disk /dev/sda: 120.0 GB, 120034123776 bytes255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x000b5321 Device Boot Start End Blocks Id System/dev/sda1 * 2048 234440703 117219328 83 LinuxDisk /dev/sdb: 250.1 GB, 250059350016 bytes255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk identifier: 0x96360d50 Device Boot Start End Blocks Id System/dev/sdb1 * 2048 3074047 1536000 27 Hidden NTFS WinRE/dev/sdb2 3074048 293617502 145271727+ 7 HPFS/NTFS/exFAT/dev/sdb3 471437312 488396799 8479744 17 Hidden HPFS/NTFS/dev/sdb4 293617662 471437311 88909825 5 Extended/dev/sdb5 315830272 459382783 71776256 83 Linux/dev/sdb6 459384832 471437311 6026240 82 Linux swap / SolarisPartition table entries are not in disk orderDisk /dev/mapper/docker-8:1-1589297-pool: 107.4 GB, 107374182400 bytes255 heads, 63 sectors/track, 13054 cylinders, total 209715200 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 65536 bytes / 65536 bytesDisk identifier: 0x00000000Disk /dev/mapper/docker-8:1-1589297-pool doesn't contain a valid partition table$ sudo parted -l [sudo] password for xieerqi: Model: ATA Radeon R7 (scsi)Disk /dev/sda: 120GBSector size (logical/physical): 512B/512BPartition Table: msdosNumber Start End Size Type File system Flags 1 1049kB 120GB 120GB primary ext4 bootModel: ATA TOSHIBA MK2555GS (scsi)Disk /dev/sdb: 250GBSector size (logical/physical): 512B/512BPartition Table: msdosNumber Start End Size Type File system Flags 1 1049kB 1574MB 1573MB primary ntfs boot, diag 2 1574MB 150GB 149GB primary ntfs 4 150GB 241GB 91.0GB extended 5 162GB 235GB 73.5GB logical ext4 6 235GB 241GB 6171MB logical linux-swap(v1) 3 241GB 250GB 8683MB primary ntfs hiddenModel: Linux device-mapper (thin-pool) (dm)Disk /dev/mapper/docker-8:1-1589297-pool: 107GBSector size (logical/physical): 512B/512BPartition Table: loopNumber Start End Size File system Flags 1 0.00B 107GB 107GB ext4$ sudo blkid[sudo] password for xieerqi: /dev/sda1: UUID="86df21bf-d95f-435c-9292-273bdbcba056" TYPE="ext4" /dev/sdb1: LABEL="System" UUID="F4F688B2F68876A0" TYPE="ntfs" /dev/sdb2: LABEL="TI105866W0A" UUID="4EBAAE53BAAE36FD" TYPE="ntfs" /dev/sdb3: LABEL="HDDRECOVERY" UUID="BC4ED40D4ED3BDF8" TYPE="ntfs" /dev/sdb5: UUID="0ca7543a-5463-4a07-8bbe-233a7b0bd625" TYPE="ext4" /dev/sdb6: UUID="3a6e2270-19a2-49d7-aab3-5efb92d3b3d0" TYPE="swap" /dev/loop0: UUID="a3693b88-7899-4628-848d-d9012205cf56" TYPE="ext4" /dev/mapper/docker-8:1-1589297-pool: UUID="a3693b88-7899-4628-848d-d9012205cf56" TYPE="ext4" $
Можно было бы использовать немного AWK
магия для анализа выходных данных lsblk
чтобы перечислить все размонтированные разделы :
$ lsblk --noheadings --raw | awk '$1~/s.*[[:digit:]]/ && $7==""' sdb1 8:17 0 1.5G 0 part sdb3 8:19 0 8.1G 0 part sdb4 8:20 0 1K 0 part sdb5 8:21 0 68.5G 0 part sdb6 8:22 0 5.8G 0 part
Или в качестве альтернативы:
$ lsblk --noheadings --raw -o NAME,MOUNTPOINT | awk '$1~/[[:digit:]]/ && $2 == ""' sdb1 sdb2 sdb3 sdb4 sdb5
Что именно там происходит, так это то, что мы перечисляем все
строки, первый столбец которых начинается с буквы s
(потому что именно так обычно называются диски) и заканчивающиеся числом (которые представляют разделы). В моем предыдущем выводе вы могли видеть, что у меня есть другие файловые системы, например, для docker, поэтому в приведенной выше команде мы избавляемся от всего ненужного.
Монтаж Перегородок
Я обнаружил, что mount
может быть придирчивым: ему нужно знать точную файловую систему, его нужно запускать от имени root и т.д. udisksctl mount -b /dev/sXY
это гораздо лучшая команда, может быть запущена как обычный пользователь и автоматически подключается к /media/$USER/
папка. Например,
$ udisksctl mount -b /dev/sdb5 Mounted /dev/sdb5 at /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd625.
Это то, что я разработал для перечисления размонтированных томов:
lsblk --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}'
sudo blkid -o list
отобразится список всех смонтированных и размонтированных разделов. Кроме того, вы можете использовать mount
и df
чтобы увидеть все точки монтирования.
mount -t type device destination_dir
может использоваться для монтирования вашего устройства / раздела.
Чтобы ответить на ваш первый вопрос, выполните:
sudo parted -l
Если они нормально смонтированы, просто запустите:
mount -a
Со страницы руководства по монтированию: Команда
mount -a [-t тип] [-O список опций]
(обычно указывается в bootscript) приводит к тому, что все файловые системы, упомянутые в fstab (соответствующего типа и/или имеющие или не имеющие надлежащих параметров), монтируются, как указано, за исключением тех, строка которых содержит ключевое слово noauto.
Если они обычно не монтируются, вы должны предоставить опции для монтирования.
Я только что создал скрипт, основанный на ответах, которые люди сказали здесь, в этом случае я сначала перечисляю все размонтированные разделы, а затем монтирую их с помощью udisksctl.
То окончательный сценарий будет выглядеть следующим образом:
lsblk --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}' | grep -E "(/dev/sd.)[[:digit:]]" | xargs -I{} -n1 udisksctl mount -b {}
Здесь,
lsblk --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}'
будет производить ПДД сда1 ... sdb sdb1 ... sdc .... но мы не хотим ПДД себя, мы хотим сда1, сда2 ... поэтому нам нужно удалить пдд, sdb, sdc самих себя,
итак, мы добавляем
grep -E "(/dev/sd.)[[:digit:]]"
раздел, как это сделать.
Теперь он производит sda1,sda2,...,sdb1,sdb2,... теперь вроде неплохо :)
и теперь мы можем монтировать их один за другим, используя xargs следующим образом:
xargs -I{} -n1 udisksctl mount -b {}
Вы также можете использовать,
blkid -c /dev/nul | awk -F: '{print $1}'
чтобы получить список всех смонтированных разделов, а затем использовать Lsblk
чтобы проверить, каких из них не было в смонтированном списке.