Как извлечь определенные слова и значения из текстового файла в bash

Ubuntu12.04 :Как отключить процесс демона при запуске

Журналы отчетов об ошибках Debian-#620921 udev :Пожалуйста, определите lxc и не пытайтесь запускать его

At the first glance udev events are supported in the container. But for the sake of optimization, I recommend to not use it as it will trigger the events in all the containers.

В случае, если вышеизложенное неясно, предлагаю убить его огнем . Обычно было бы нежелательно, чтобы udevвнутри контейнера даже думал о прикосновении к sdaи т. д. Обычно не было ничего , что вы хотели бы, чтобы udev делал.

Читая нижеследующее, вы можете догадаться, что мой ответ — придерживаться systemdпартийной линии :-). Судя по всему, у LXC были разные мнения, по крайней мере одно время:https://stgraber.org/2013/12/21/lxc-1-0-your-second-container/#comments

Я полагаю, что комментатор "wwwwww" является псевдонимом (! )ведущего systemdЛеннарта Поттеринга. Либо так, либо кто-то отлично подражал его стилю письма и его позиции по этому вопросу :-).

Возможно, кто-то, более знакомый с LXC, точно знает, какие комбинации настроек udevи LXC ожидают, что LXC сделает что-то полезное. И какие условия могут генерировать предупреждающее сообщение, подобное этому. В приведенной выше ссылке указан диапазон дат для Ubuntu, в котором утверждается, что исходный выпуск Ubuntu 12.04 должен подойти. Однако он не говорит, выдает ли он какие-либо ложные предупреждения. (Это будет не первая программа, делающая это:-))

Какими бы ни были достоинства, если вам не нужно получать доступ к какому-либо физическому устройству изнутри LXC, отключение udev может показаться простым способом избежать появления предупреждений udev. «Пока мы ждем, пока люди поймут, как именно должно работать пространство имен устройств». Разработчик LXC упоминает, что «это далеко не идеально» :-). Это было в 2013 году, и до сих пор нет пространства имен устройств (в Linux v4.20 ).

Следующий соответствующий комментарий выглядит следующим образом: «Наша конфигурация по умолчанию позволяет udev создавать узлы устройств, но получать доступ только к тем, которые разрешены в конфигурации». В этом смысле ваш LXC работал так, как хотел LXC :, он позволял вам создать узел устройства /dev/sda, но не позволял вам получить к нему доступ.

Не знаю, почему ваш udevсоздает /dev/sda, (предположительно )не жалуется на невозможность запустить blkidна нем, но жалуется на то, что его не смотреть.


Ядро (версии 4.20 )не обеспечивает изоляцию устройств. Для устройств нет пространства имен. По сравнению, например. к сетевым пространствам имен, которые позволяют изолировать сетевые интерфейсы. Список пространств имен, которые можно изолировать, смотрите вman 7 namespacesили man 2 clone.

Если вам интересно, что может делать принципиальная среда выполнения контейнера , ответ заключается в том, что она может отключить доступ ко всем устройствам (, кроме нескольких виртуальных, таких как /dev/null, /dev/pts/*, и т. д. ). Я больше знаком сsystemd-nspawn(и его документацией ). По крайней мере, с cgroups v1 nspawn использует группу управления устройствами для отключения доступа к устройствам. cgroups v2 в конечном итоге получил эквивалентную функцию. В то же время nspawn предотвращает создание узла устройства с помощью seccomp(), и это работает очень хорошо. Конечно, это означает, что вы должны быть уверены, что образ файловой системы контейнера не содержит никаких «неправильных» узлов устройств, поэтому решение cgroup лучше.

Текущий systemd-udevd.serviceопределяет, что он не должен работать, если /sysсмонтирован только для чтения -.

2
03.02.2021, 16:24
3 ответа

Если вы хотите использовать cut, вам нужно установить разделитель с опцией-d:

$ cut -d' ' -f1,4 file
ExperimentOne.5
ExperimentTwo.4
5
18.03.2021, 22:32

Попробуйте сawk:

awk '/results/ {print $1,$4}'

или

awk '$2=="results"{print $1,$4}'
6
18.03.2021, 22:32

Другое решение сsed:

sed -En 's/results *= *([^ ]+).*$/\1/p' filename.txt

Если вы хотите использовать конвейер grep+ cut, вы должны помнить, что cutпредполагает TABв качестве разделителя полей, если вы его не укажете. Итак, используйте

grep "results" filename.txt | cut -d' ' -f1,4
5
18.03.2021, 22:32

Теги

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