zgrep для столбца и вывод соответствующего имени файла

Прошло четыре года и...

да, загрузка с зеркального тома LVM(lvconvert -m1 /dev/vg0/root)у нас работает в Debian 9 (stretch ). Модуль GRUB lvm.mod понимает зеркальные тома LVN из коробки, GRUB успешно читает /boot/grub/grub.cfg, который находится на зеркальном корневом томе, представляет меню загрузки,загружает ядро ​​и initrd. Затем он зависает и не может смонтировать корень LVM :

.
device-mapper: table: 254:5: raid: Failed to run raid array
device-mapper: reload ioctl on (254:5) failed: Invalid argument

Это решается путем добавления следующих модулей в/etc/initramfs-tools/modules(порядок вопросов )и запускupdate-initramfs:

xor
async_tx
raid6_pq
async_xor
async_pq
async_memcpy
async_raid6_recov
md_mod
raid1
raid456
dm_raid
dm_log
dm_region_hash
dm_mirror
lvm

(возможно, можно исключить raid6 _pq, async _raid6 _recov, raid456 --Я не могу проверить прямо сейчас ).

Теперь зеркальный корень LVM должен нормально монтироваться. Последний шаг — сделать оба физических диска загрузочными, чтобы в случае отказа одного из них система по-прежнему загружалась с другого :

.
pvdisplay -m | egrep 'PV Name|_rimage_'  # find out which physical disks root lv resides on
grub-install /dev/firstdisk
grub-install /dev/seconddisk
1
24.09.2020, 19:11
1 ответ

Самое ясное/простое ИМХО:

while IFS= read -r fname; do
    zcat "$fname" | awk -F'^' -v fname="$fname" '$8==12345{print fname, $0}'
done < <(find. -type f)

но есть также возможность распечатать имя файла из zgrep и прочитать его с помощью awk, что может быть более эффективным (, но зависит от имени файла, не содержащего никаких :s):

zgrep -H '12345' * |
awk -F'^' '{fname=$0; sub(/:.*/,"",fname); sub(/[^:]+:/,"")} $8==12345{print fname, $0}'

Оба решения предполагают, что у вас нет символов новой строки в именах ваших файлов, а первое также предполагает отсутствие escape-последовательностей, таких как \tв ваших именах файлов.

3
18.03.2021, 23:02

Теги

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