Дополнительные интерфейсы моста добавляются автоматически

Если Вы хотите искать в нескольких файлах сразу, можно ввести их всех в конце командной строки, разделенной пробелами.

grep -i test /path/to/file /some/other/file

Можно использовать подстановочные шаблоны.

grep -i test README ChangeLog *.txt

Если у Вас есть список файлов с одним именем файла на строку, то у Вас есть несколько возможностей. Если не будет никаких экзотических символов в Ваших именах файлов, то любой из них будет работать:

grep -i test -- $(cat list_of_file_names.txt)
<list_of_file_names.txt xargs grep -i test -H --

Первая команда заменяет выводом команды cat list_of_file_names.txt в командную строку. Это перестало работать, если какие-либо из имен файлов содержат пробел или подстановочные знаки оболочки (\[?*). Это также перестало работать, если список является столь большим, что пробегается через предел длины командной строки (больше, чем приблизительно 128 КБ во многих системах). Вторая команда перестала работать, если какие-либо из имен файлов содержат пробел \"'. Это заботится о выполнении egrep многократно, если предел длины командной строки требует это. -H опция гарантирует это grep будет всегда печатать название файла соответствия, даже если это, окажется, назвали с единственным файлом. -- гарантирует это, если первое имя файла начинается с a -, это будут рассматривать как имя файла и не как опцию.

Безопасный способ обработать имена файлов, которые могут содержать любой символ кроме новых строк, состоит в том, чтобы выключить разделение на пробеле кроме новых строк и выключить globbing (подстановочное расширение).

set -f; IFS='
'
grep -i test -- $(cat list_of_file_names.txt)
set +f; unset IFS
4
28.03.2013, 10:59
2 ответа

Это могло бы пролить некоторый свет: Виртуальное устройство Ethernet. Мог бы предоставление Вас что-то вроде этого: Уверенный у Вас нет некоторой конфигурации под /var/lib/lxc/ с lxc.network.type = veth ?

grep -r 'veth' /var/lib/lxc/
2
27.01.2020, 20:48
  • 1
    Спасибо, это было очень полезно в продвижении меня понять это лучше. Я вижу теперь, когда каждый lxc контейнер с lxc-network.type=veth создает свое собственное устройство Ethernet и присоединяет его к мосту, определенному в lxc.network.link=br0|virbr0|lxcbr0 –  David Parks 28.03.2013, 13:27
  • 2
    @DavidParks: Хорошая работа. –  Zimzalabim 28.03.2013, 16:52

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


Ну, я провел большую часть дня сегодня, носящегося с сетями в LXC, и теперь вещи намного более ясны, таким образом, я думал, что передам то, что я изучил.

Сначала несколько определений, таким образом, мы знаем то, что мы смотрим на (я действительно не понял различия между мостом как br0 или virbr0 и интерфейсом как eth0, и я определенно не знал что те интерфейсы как vethILNaLo были для).

Мост

Мост показывается интерфейсом в ifconfig, но мост действительно только соединяет 2 ДРУГИХ сети, это не сетевой интерфейс сам. Вы видите и изменяете мосты при помощи brctl show, и настройте их постоянно в/etc/networking/interfaces.

Мост лучше всего думается как переключатель.

Примеры мостов мы видим:

  • br0
  • lxcbr0
  • virbr0

Сетевой интерфейс

Интерфейсы на самом деле присвоены единственному хосту, единственный интерфейс не может быть присвоен нескольким хостам. Хост отправляет и получает сетевой трафик к интерфейсу. Интерфейс, который это выбирает, зависит от таблицы маршрутизации, route покажет Вам это.

Причина нам нужно образование моста, состоит в том, что eth0 физически присоединен к хосту ОС и не может также быть присоединен для контейнера или другой виртуальной машины.

Примеры физических интерфейсов мы видим:

  • eth0
  • vethILNaLo

Некоторые примечания о том втором: vethILNaLo

  • Это - физический интерфейс, который создается для каждого контейнера LXC, который запускается, он присоединен к контейнеру и рассматриваемый в контейнере как eth0
  • Каждый раз Вы определяете lxc.network.type=veth в файле конфигурации LXC это создает другой этих физических интерфейсов и присоединяет его в контейнере, можно использовать lxc.network.name = eth0 определять имя интерфейса в контейнере (значение по умолчанию eth0, eth1, и т.д. обычно работает),
  • Когда этот интерфейс создается, он ни к чему не подключен, он похож, он не включается вообще

Соединение vethILNaLo к сети с помощью моста

Помните, что мост похож на основанный на программном обеспечении переключатель. Если Вы включаете два интерфейса в него, они соединены таким же образом, что переключатель подключает физические компьютеры.

В /etc/network/interfaces мы определили и создали br0, мы в основном определили переключатель. В том же самом файле мы также подключили eth0 к нашему “переключателю” br0:

iface br0 inet static
        bridge_ports eth0

В файле конфигурации LXC мы подключили физический интерфейс контейнеров к тому же самому swtich:

lxc.network.type=veth
lxc.network.link=br0

/etc/network/interfaces настраивается, когда запуски компьютера (который имеет смысл, хосты eth0 интерфейс, должен всегда подключаться к нашему “переключателю”), и LXC заботятся о создании физического порта для нашего контейнера LXC и включения его в наш “переключатель”, названный br0 (различие между мостом, и переключатель является очень маленьким, так с этой целью нормально думать о них как о том же, переключатель только немного более умен, чем мост).

Что такое lxcbr0 и virbr0?

lxcbr0 и virbr0 оба автоматически добавляются LXC, это оба то же самое (virbr0, более старая версия, сохраненная для назад совместимости, lxcbr0 является более новым, но они делают точно то же самое). Эти два моста (иначе “переключатели”) также обеспечивают NAT/возможности маршрутизации. Таким образом, если бы Вы подключили свою виртуальную машину к этим мостам, то она была бы похожа на соединение его к маршрутизатору.

Так как нам не нужен другой маршрутизатор (все наши контейнеры LXC будут иметь их собственный IP в сети), я удалил оба из этих неиспользованных мостов от хоста ОС в документе сборки

8
27.01.2020, 20:48
  • 1
    Как физический интерфейс может быть создан для каждого контейнера LXC, который запускается? Это было бы интерфейсом TAP. А-ч –  Ricky Robinson 09.01.2017, 15:28

Теги

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