Как получается, что одна и та же команда find может давать два разных результата?

В большинстве современных систем GNU команда mount может справиться с этим:

mount -o loop file.iso /mnt/dir

для размонтирования вы можете просто использовать umount команда

umount /mnt/dir

Если в вашей ОС нет этой опции, вы можете создать петлевое устройство :

losetup -f # this will print the first available loop device ex:/dev/loop0
losetup /dev/loop0 /path/file.iso #associate loop0 with the specified file
mount /dev/loop0 /mnt/dir #It may be necessary specify the type (-t iso9660)

для размонтирования, вы можете использовать -d :

umount /mnt/dir
losetup -d /dev/loop0

Если файл имеет разделы, например HD-образ, вы можете использовать параметр -P (в зависимости от вашей ОС), он отобразит разделы в содержимом файла:

losetup -P /dev/loop0 /path/file.iso # will create /dev/loop0 
ls /dev/loop0p* #the partitions in the format /dev/loop0pX

3
25.02.2016, 00:07
2 ответа

Это настоящая ошибка, обнаруженная в find версии 4.4.2, но ошибка была исправлена ​​в find версии 4.6.0.

1
27.01.2020, 21:27

Учитывая вышеизложенные выводы, в качестве обходного пути вы можете попытаться либо ограничить поиск до / usr

sudo find /usr -iname 'firefox_binary.py'

, либо пропустить / sys одним из следующих способов, в зависимости от вашего варианта использования. :

sudo find / -mount -iname 'firefox_binary.py'

sudo find / -not -path '/sys/*' -iname 'firefox_binary.py'

Другой, но ИМХО более уродливый обходной путь - это попытаться запустить создание проблемных каталогов перед поиском, например. грамм. с

ls /sys/kernel/debug/tracing/options

или

cat /sys/kernel/debug/tracing/options/<some_file>

или как угодно.

Я также предлагаю вам отправить отчет об ошибке разработчикам вашего find (возможно, busybox или findutils ). Я думаю, что find не должен просто выходить из рекурсии в этом случае, и, по крайней мере, не должен без сообщения об ошибке.

1
27.01.2020, 21:27

Теги

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