Как удалить ограничение длины от losetup -a

Я использую losetup -a для просмотра своих устройств цикла, но имеет ограничение по длине (что составляет 62 символа). Поэтому я не могу точно знать, какое устройство цикла я действительно хочу.

Пример:

[root@r7byach]# losetup -a /dev/loop0: [fc03]:33030504 (/storage5_vol1/6/ABCD116476-linux-ubuntu-10_04-64b-base-07150/*) /dev/loop1: [0015]:4933 (/storage4/5/ABCD12345-linux-centos-5-64b-base-86836/hdc) 

Я могу получить вывод на / dev / loop1, используя

 losetup -a|grep diskPath |cut -f1 -d:|cut -f3 -d/ 

Но я не могу получить устройство на loop0, так как имя не полностью квалифицировано.

Как я могу получить устройство цикла независимо от этого размера?

2 Solutions collect form web for “Как удалить ограничение длины от losetup -a”

С недавними ядрами (≥ 2.6.37) см . Ответ Петра Узеля . С более старыми ядрами этот предел длины присущ.

Strace показывает, что losetup -a получает имя через LOOP_GET_STATUS ioctl, который вызывает loop_get_status_old , который получает свои данные из struct loop_info . Поле имени в этой структуре данных ядра ограничено LO_NAME_SIZE = 64 байта. (Есть также loop_get_status64 и struct loop_info64 , но они имеют одинаковые ограничения.) Таким образом, это ограничение является внутренним, вы не можете сделать ничего лучше.

Во всяком случае, эта структура данных показывает исходное имя базового устройства или файла, но вы можете переименовать его (или даже удалить), и это не отразится на выходе из losetup .

Вывод losetup показывает идентификатор файловой системы ( st_dev ) и inode ( st_ino ) файла, например [fc03]:33030504 . Вы можете найти блок-устройство для файловой системы, просмотрев его в /proc/partitions (строка, начинающаяся с 252 3 ). Затем найдите точку монтирования блочного устройства в /proc/mounts . Затем запустите find /mount/point -inum 33030504 чтобы найти файл. Да, он запутан, и нет, нет более быстрого способа (ну, есть debugfs для некоторых типов файловой системы ).

Начиная с ядра 2.6.37, вы можете найти имя базового файла (без ограничения длины) через /sys/block/loopX/loop/backing_file . Команда losetup поддерживает этот метод, поскольку util-linux 2.19.

  • Как сделать работу с закладкой ZSH с двумя вкладками
  • Как создать имя файла для конвейера для удаления всех файлов?
  • Сценарий Bash для переименования файлов из источника текстового файла
  • Sudo выполнить сценарий оболочки по-разному по сравнению с прямым пользователем выполнить его
  • Считайте в реальном времени выходные строки из другой команды вывода
  • Вывод строки в нижнем правом углу терминала
  • Команда, которая дает имя пользователя @ hostname: pwd
  • Зачем . / home / Desktop неправильный и ./Desktop правильно?
  • Чтение нажатий клавиш в оболочке с использованием сигналов trap и Unix
  • sudo su - anotherusername, не запрашивающий пароль
  • обрабатывать файлы в каталоге по мере их появления
  • Почему не работал Ctrl-C?
  • Linux и Unix - лучшая ОС в мире.