LINUX.ORG.RU

Данные о состоянии сервиса в systemd в Java

 ,


1

1

Однако, здраствуйте.

Суть такова: пишу консольное приложение на Java+сборка Maven для мониторинга/упрощения настройки сервера Apache (ибо задолбался в конфигах вручную ковыряться). Для, собственно, мониторинга состояния оного мне необходимо получать данные из apache2/httpd.service и выводить их на экран + обновление при изменении состояния.

Вот здесь я и застрял.

Гуглил библиотеки для доступа к systemd и нашёл вот это:

https://github.com/thjomnx/java-systemd

Но вот незадача: ни руководств каких-либо, ни документации к этой библиотеке нету! Только пару захудавших вики-страниц, по которым нужные мне функции даже Ванга не сможет вычислить.

Второй вариант: исполнять команды для терминала непосредственно в функции:

Runtime.getRuntime().exec("systemctl is-active --quiet httpd")

но тогда становится сложновато обновлять информацию «по требованию», сиречь только при её изменении.

Ваши советы? Жахать всё через exec да поизвращаться с обновлением (в таком случае и для OpenRC с runit что-то можно сделать)? Или же где-то есть библиотека для вышеописанного с толковой документацией?

Можешь в dbus напрямую лезть, если не страшно. Там можно подписаться на сигналы, нотификации и всё подряд.

Но проще, конечно, сделать на тупом поллинге с exec’ами.

intelfx ★★★★★ ()
Ответ на: комментарий от maxcom

Ну я надеюсь :)

Под «напрямую» я, разумеется, не имел в виду ручную работу с сокетами. Всё равно это будет сложнее, чем позвать команду и пропарсить однострочный вывод или код возврата. Хоть и правильнее, безусловно.

А вот есть ли для Java эквивалент libsystemd?

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)

Но вот незадача: ни руководств каких-либо, ни документации к этой библиотеке нету! Только пару захудавших вики-страниц, по которым нужные мне функции даже Ванга не сможет вычислить.

А что именно непонятно?

https://github.com/thjomnx/java-systemd/wiki/Code-examples

Systemd systemd = Systemd.get()
Service service = systemd.getManager().getService("httpd");
...
// PROFIT!!!
BattleCoder ★★★★★ ()
Последнее исправление: BattleCoder (всего исправлений: 2)