Перейти к содержимому

Группы

Группа — это набор записей с именем и единица включения-выключения. Каждая запись принадлежит ровно одной группе; hostsctl add без --group кладёт её в local, создавая эту группу при первом использовании.

Terminal window
hostsctl group list
type name entries file description
on local local 3 config.yaml Local development
on local work 2 20-work.yaml Work stands
off remote blocklist 102843 30-ads.yaml https://raw.githubusercontent.com/…
Terminal window
hostsctl group add work --description "Work stands"
hostsctl add 10.0.0.7 stand.local --group work

--group у add тоже создаёт группу, если её нет, так что явный group add нужен только когда хочется сразу задать описание или конкретный файл.

Terminal window
hostsctl group disable blocklist --apply
hostsctl group enable blocklist --apply

Выключенная группа сохраняет все записи и просто не рендерится. Ради этого группы и существуют: выключить сто тысяч заблокированных доменов на один вечер не должно означать их удаление.

--apply у любой изменяющей команды сразу перерисовывает /etc/hosts, для чего нужен root. Без него правка остаётся в конфиге до следующего apply.

Описание рендерится шапкой группы внутри управляемого блока:

# --- work — Work stands ---
10.0.0.7 stand.local

У удалённой группы без описания вместо него подставляется URL источника — так всегда видно, откуда взялся блок строк.

Terminal window
hostsctl group rm work # спросит; -y пропускает вопрос

Группа удаляется вместе с записями, а для удалённой — ещё и кеш списка. Если записи могут понадобиться позже, выключай, а не удаляй.

Группы живут либо в основном конфиге, либо в файле-зоне:

Terminal window
hostsctl group move work --file zones/20-work.yaml
hostsctl group move work --file main # обратно в config.yaml

Имена групп уникальны по всем файлам. Если одно имя встретилось дважды, hostsctl отказывается работать и называет оба файла — молча выбрать один означало бы молча потерять другой.

У группы есть либо entries (локальная), либо source (удалённый блоклист), но не осмысленно оба сразу. Добавление ручной записи в удалённую группу отвергается, а не игнорируется тихо; check предупредит, если в конфиге всё-таки оказалось и то и другое.