Есть ли способ сравнить команду find (для сравнения с locate)?

это:

# ip link add link eth0 name untagged type vlan id 0

, похоже, помогает.

tcpdump на родительском интерфейсе (eth0) показывает непомеченные пакеты, когда вы пингует -I untagged (some-ip).

(tcpdump на новом логическом интерфейсе должен отображать только нетегированный трафик, тогда как tcpdump на родительском интерфейсе должен отображать весь трафик, помеченный и немаркированный, с заголовками 802.1q для помеченного материала.)

вам может потребоваться отключить ARP на родительском интерфейсе, чтобы немаркированные ответы ARP не помещались в таблицу ARP относительно родительского интерфейса:

# ip link set eth0 arp off
# ip link set untagged arp on

я бы также отключил локальные адреса связи IPv6 на родительском интерфейсе и включил бы на немаркированном логическом интерфейсе навсегда мера.

вы можете повышать / понижать нетегированный интерфейс, не уничтожая весь родительский интерфейс (включая тегированный трафик) и т. Д.

1
18.03.2018, 01:37
1 ответ

В OpenBSD база данных locate по умолчанию перестраивается раз в неделю / etc / weekly сценарий, вызывающий /usr/libexec/locate.updatedb от имени пользователя nobody .

Утилита locate.updatedb представляет собой сценарий / bin / sh ( pdksh в OpenBSD), который более или менее запускает find в корневых файловых системах. Все, к чему никто не может получить доступ, помещается в базу данных местоположения.

Мне трудно поверить, что find / будет быстрее, чем locate в системе, где locate использует базу данных файлов, созданных с помощью найти / .

Разница, конечно же, в том, что вы можете найти дополнительных файлов , запустив find как пользователь, у которого есть дополнительные права доступа, чем у пользователя nobody .

В Linux , по крайней мере, на машине Ubuntu, к которой у меня есть доступ на работе, база данных locate , похоже, воссоздается ежедневно, согласно locate (8 ) руководство. Это делается с помощью утилиты updatedb .

Эта утилита (символическая ссылка на / usr / bin / updatedb.mlocate на этом компьютере) - это скомпилированный двоичный файл, принадлежащий пакету mlocate .

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

Опять же, мне трудно поверить, что запрос к базе данных mlocate будет медленнее (при любых обстоятельствах), чем выполнение find / .

В конце концов, именно поэтому все инструменты locate (о которых я знаю) работают с базой данных.

2
27.01.2020, 23:34

Теги

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