Как удалить ограничение длины от 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.

  • Использование awk для обработки вывода ls с пробелами в именах файлов / пути
  • Что делать, если я хочу печатать каждую команду в файле sh в файле журнала, а также в консоли
  • find: отсутствующий аргумент `-exec '
  • переименовывать файлы с помощью команды rename
  • Сценарий оболочки для прокрутки через папку и файлы списка
  • Почему высокие коды выхода на Linux-оболочках (> = 256) работают не так, как ожидалось?
  • добавление звука из файла воспроизведения в поток микрофона
  • Shell зависает при выполнении команды из ssh
  • crontab дает только 2045 строк вывода вместо 6000 строк
  • Не удалось скопировать несколько файлов с помощью версии rsync 3.0.9?
  • Как скопировать файл во вложенные папки нескольких каталогов с одним и тем же префиксом?
  • Linux и Unix - лучшая ОС в мире.