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)

Улыбнуло.

I only work on it if the following requisites are met:

The kid is sleeping

My wife is hacking on her medical research topics

No beers in the fridge

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

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

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

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

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

Итак, проблему удалось решить использованием:

getRuntime().exec()

Всем спасибо за внимание.

Korchevatel ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.