Как мне `cat `файлы с фиксированным количеством строк до/между/после?

Добро пожаловать в StackExchange для Unix&Linux!

Ошибка исходит из initramfs, а основная проблема, по-видимому, описана

 dracut-initqueue[217]: Warning: /dev/disk/by-uuid/fea3e633-5380-4b23-86e0-8dd8442b4404 does not exist

Другими словами, используя драйверы хранения, доступные в initramfs, невозможно найти корневую файловую систему, указанную этим UUID.

Включает ли загрузочное меню GRUB старые версии ядра? Если это так, что произойдет, если вы попытаетесь загрузиться со старым ядром?

Если загрузка со старым ядром не работает, вы можете загрузить систему в режиме восстановления с помощью установочного носителя CentOS или использовать другой действующий носитель Linux для загрузки системы для исследования. Если команда blkidне может найти UUID, указанный в сообщении об ошибке, ни на одном из дисков, существует несколько возможных причин:

  • Пропал водитель? Некоторые современные серверы используют «BIOS RAID», для которого требуется специальный драйвер от поставщика оборудования. Возможно, вам придется предпринять дополнительные шаги для загрузки этого драйвера в среде восстановления/LiveOS. Ошибка может быть вызвана обновлением ядра на сервере, но не установкой соответствующего обновления драйвера от поставщика.

  • Ошибка конфигурации GRUB/initramfs? Корневая файловая система может быть указана с параметрами загрузки ядра, и ошибка в редактировании конфигурации GRUB могла привести к тому, что она ссылалась на неправильную файловую систему. Вам нужно будет определить правильный UUID для корневой файловой системы и исправить конфигурацию. Исправления фактического файла конфигурации GRUB /boot/grub/grub.cfgили /boot/efi/EFI/centos/grub.cfgбудет недостаточно; вам также необходимо исправить файл, который используется в процессе автоматической перенастройки GRUB при установке обновлений ядра. Этот файл должен быть /etc/default/grub.

  • Корневая файловая система повреждена или перезаписана? Вы сказали, что пытались загрузиться в режиме восстановления, но нашли /etc/fstabпустым -, как именно вы это сделали? Если бы это была аварийная оболочка Dracut, она работала бы в среде initramfs и вполне могла бы иметь пустой файл /etc/fstab.

Но если вы действительно загрузились с отдельного носителя и успешно смонтировали устройство, которое должно было содержать корневую файловую систему, и нашли пустой /etc/fstabфайл, это означает, что с этой файловой системой могло произойти что-то очень плохое. В таком случае, я надеюсь, у вас есть хорошие резервные копии.

0
25.01.2021, 21:00
3 ответа

Печатаю с телефона, так что извиняюсь за набросок, непроверенный ответ.

Конечно, вы можете просто объединить (cat )все, как если бы все было файлом:

cat <( echo foo ) file1.txt <( echo bar ) file2.txt <( echo baz )
1
18.03.2021, 22:34
sh -c 'while [ $# -gt 0 ] ; do echo "$1" ; cat "${2:-/dev/null}" ; shift 2 2>/dev/null; done' - foo file1 bar file2 baz

В общем, требовать, чтобы это была 1 -строка, довольно глупо, кого волнует, будет ли это одна строка, если вы поместите ее в функцию или файл оболочки?

1
18.03.2021, 22:34

С помощью одной команды, использующей любой awk в любой оболочке на каждом компьютере Unix

$ awk 'FNR==1{print x} 1; END{print x}' x='foo' file1 x='bar' file2 x='baz'
foo
file1 line 1
file1 line 2
bar
file2 line 1
file2 line 2
baz
1
18.03.2021, 22:34

Теги

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