Ответы:
Вывод списка несмонтированных разделов
Для решения листинга отмонтированных разделов части, есть несколько способов - lsblk
, fdisk
, parted
, blkid
.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 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 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000b5321
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 234440703 117219328 83 Linux
Disk /dev/sdb: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk 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 / Solaris
Partition table entries are not in disk order
Disk /dev/mapper/docker-8:1-1589297-pool: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders, total 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disk identifier: 0x00000000
Disk /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: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1049kB 120GB 120GB primary ext4 boot
Model: ATA TOSHIBA MK2555GS (scsi)
Disk /dev/sdb: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number 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 hidden
Model: Linux device-mapper (thin-pool) (dm)
Disk /dev/mapper/docker-8:1-1589297-pool: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Number 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.
sudo blkid -o list
перечислит все смонтированные и не смонтированные разделы. Кроме того, вы можете использовать mount
и, df
чтобы увидеть все точки монтирования.
mount -t type device destination_dir
может быть использован для монтирования вашего устройства / раздела.
Чтобы ответить на ваш первый вопрос, запустите:
sudo parted -l
Если они нормально смонтированы, просто запустите:
mount -a
Со страницы руководства пользователя mount: Команда
mount -a [-t type] [-O optlist]
(обычно приводится в загрузочном скрипте) вызывает монтирование всех файловых систем, упомянутых в fstab (правильного типа и / или имеющих или не имеющих надлежащих параметров), как указано, за исключением тех, чья строка содержит ключевое слово noauto.
Если они обычно не смонтированы, вы должны указать опции для монтирования.
mount
команда должна быть sudo mount <options>
такой же, если она запускается не как root, или вы получаете: mount: это может сделать только root
udisksctl mount -b /dev/sXY
команду, которую может запустить обычный пользователь, очень круто.
Вот что я разработал для перечисления несмонтированных томов:
lsblk --noheadings --raw | awk '{print substr($0,0,4)}' | uniq -c | grep 1 | awk '{print "/dev/"$2}'
Вы также можете использовать,
blkid -c /dev/nul | awk -F: '{print $1}'
чтобы получить список всех смонтированных разделов, а затем использовать Lsblk
для проверки того, чего не было в смонтированном списке.