Как стать автором
Обновить

Комментарии 31

Я старался!
Возможные директивы слежения для systemd.path
К сожалению их мало, но базовые потребности для старта каких-либо юнитов они, в принципе, покрывают:

не совсем понял. У них семантика ИЛИ или все-таки И? Судя по комменту про пустую строку скорее И.

Семантика "ИЛИ", поэтому можно указывать несколько файлов/каталогов.


По поводу пустой строки — это такая фича, которая означает сброс ранее заданных параметров с данным именем. Часто ещё используется при переопределении поведения стандартных юнитов через systemctl edit <unit-name>. Пример из жизни — сокет-активация ssh-сервиса. По-умолчанию ssh.socket слушает порт 22, но если выполнить команду systemctl edit ssh.socket и в открывшимся редакторе прописать следующее:


[Socket]
ListenStream=
ListenStream=30013

То systemd перестанет слушать порт 22, и будет слушать 30013. Без пустого параметра systemd будет слушать и новый порт (30013), и старый порт (22). Вот как-то так.

О как! Это значит во всех юнитах действует? Не знал. Впервые в мане по systemd.path увидел.
Ну вот судя по всему всё-таки или. Сейчас на тестовом проверил.
Вот бы можно было мониторить занятое место директорией или файлом по евент событию и выполнять юнит очистки\сжатия\дедупликации.

мониторить просто любые изменения и запускать недостаточно? Слишком часто?

Недостаточно, конечно. Синтетический пример — файл открыли, айподы кончились. Или файл открыли, пишем-пишем — место кончилось, а увидеть в системди это мы можем только, если файл закрылся.
Т.е. в системди это отловить можно, но уже после того, как проблема случилась.

Справедливости ради, кроме настроенных систем мониторинга, других средств отловить такие события и нету… Ну или костыли. ;-)
Часто ли вы видели в мониторингах контроль за инодами на фс? Я вот всего раз 15 с этой проблемой сталкивался за свою практику, но в мониторинге такого почти нигде нет.

Постоянно видел контроль за инодами.

Может всё таки иноды?

Конечно, чертова автозамена ))))

Только сейчас заметил… ;-)
Пустая придирка: почему ты используешь cat /path/to/unit вместо systemctl cat unit ?
Курс же по systemd, так давайте на полную)
Согласен, просто многие редактируют вендорские юниты, в /usr/lib/systemd/system, а потом удивляются, отчего их изменения превращаются в тыкву, после обновления пакета. Поэтому вот. Кстати не ты первый ;-).
Спрошу, раз уж упомянули webdav яндекс — какие манипуляции с ним нужно сделать, чтобы он работал нормально? В моем случае скорость была настолько низкой, что запросы отваливались по таймауту.
Я немного не об этом. В октябре 2019 года проскакивали новости (например), что яндекс начал серьезно ограничивать скорость при работе с Диском через webdav. Они передумали, или есть какой-то способ снять ограничение?

Ну как можно повлиять на то, над чем не имеешь контроля? Именно поэтому я и хочу переехать на rclone, но всё руки не дойдут.

Спасибо! Только сейчас разглядел у rclone опцию подключения к Я.Диск в обход webdav.

Да. rclone через API яндекса работает, как я понял.

А есть какой-нибудь способ запускать триггер по смене IPv4-адреса на конкретном интерфейсе (по DHCP)? Сейчас я делаю это Zabbix'ом, но хочу подумываю перевести на systemd.

Мне кажется, что для этого можно просто написать системди юнит с баш скриптом внутри, который будет реализовывать логику:

  1. записываем текущий IP

  2. спим 1 минуту

  3. просыпаемся и получаем текущий IP

  4. если текущий != старый do smth

  5. PROFIT!

Вот даже на SO такое же рекомендуют - https://stackoverflow.com/a/37816847/698689

Еще гляньте https://unix.stackexchange.com/questions/469716/systemd-networkd-run-script-after-dhcp-client-aqcuires-new-address

И еще одно готовое https://clinta.github.io/run-service-on-ip-change/
Реально - непаханое поле для велосипедостроения

Спасибо за ответ и ссылки, полезное. Только вот если в скрипте «while true, спим минуту и сверяем», то зачем вообще задействовать механизм systemd-триггеров? =))
Просто я рискнул предположить, что у systemd существует прямо такой ивент как смена адреса на интерфейсе. Вполне допускаю, что это у systemd-networkd запилено, но я им на домашнем сервере не пользуюсь (и не собираюсь). Если чего откопаю, напишу.
P.S.: это не от меня минус (у меня и полномочиев таких нет), я тоже удивлён, чего кому не понравилось.

Пожалуйста, мне вот тоже интересно, кто не согласен - пускай выйдет на свет божий и скажет, что не так. Но что-то мне подсказывает, что это просто некто ходит и мстит мне за мнение, альтернативное от его :-)

Просто я рискнул предположить, что у systemd существует прямо такой ивент как смена адреса на интерфейсе.

из того, что я вижу - очень сомнительно. Возможно у Пёттеринга есть планы запилить такой хук. Или возможно, что можно это отловить альтернативным способом - скажем, через d-bus, но настолько глубоко я не копал

Перекопал всё что мог и пришёл к таким выводам:
  • Нет такой буквы такого ивента
  • Скриптом тоже можно, но разумнее напрячь dhclient
  • Раз уж и так болтается в оперативной памяти Zabbix, почему бы ему не мониторить кроме того охренилиарда ещё один параметр.

В итоге я не стал ничего менять, ибо нефиг. Но вообще можно dhclient'ом дёргать чего-нибудь (и почему сразу в голову не пришло).

Вместо заббикса срочно рекомендую переходить на prometheus stack или https://www.netdata.cloud/

Netdata - TOP!

p.s. даже если не перейдете, то обогатите свой внутренний мир - альтернативы - это всегда хорошо!

Прямо вот срочно? Не, я искренне верю, что мне это по какой-то причине критично, но по какой — пока не ясно. В любом случае спасибо за наводку.
p.s. даже если не перейдете, то обогатите свой внутренний мир — альтернативы — это всегда хорошо!

Полностью согласен!

В связи с тем, что incron выпилен из Debian 11, пришлось срочно переделывать логику на systemd.path.

Вопрос: в incron я мог в скрипт передать имя файла, когда мониторил каталог. Как это же реализовать в systemd логике? Где-то хранить старый список файлов и сравнивать?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории