Рейтинг:1

Получение PID зависимости в systemd?

флаг us
eof

Я хотел бы написать файл модуля systemd, который должен передать команде exec PID одной из его зависимостей. В файле модуля я хотел бы иметь:

ExecStart=bar -p <PID foo.service>
Требуется=foo.service
После=foo.service

Есть ли простой способ получить PID требуемой зависимости? Не удалось найти ничего в руководстве или пример ни в одном из файлов модулей на рабочем столе Ubuntu.

Сценарий использования заключается в создании простого модульного файла, который можно использовать для подключения демона JProfiler к службе на основе Java для выполнения удаленной отладки производительности. Команде для подключения профилировщика требуется PID JVM.

Рейтинг:0
флаг cl
A.B

От человек systemctl:

-п, --свойство=

При отображении свойств объекта/работы/менеджера с показать команда, ограничение отображать свойства, указанные в аргументе. Аргумент должен быть списком имен свойств, разделенных запятыми, такие как "ОсновнойPID". [...]

Так systemctl показать -p MainPID foo будет отображаться ОсновнойPID=<pid> (а не просто pid).

Итак, если сервис фу может быть идентифицирован по его основному PID (т. е. целевой процесс на самом деле не является подпроцессом основного pid), это можно использовать:

/bin/bash -c 'declare -i $(systemctl show -p MainPID foo); [ "$MainPID" -ne 0 ] && exec bar -p $MainPID || выход 1'

Если не в своем собственном скрипте, с соглашениями о цитировании systemd, немного искажающими строку, это становится:

ExecStart=/bin/bash -c 'declare -i $$(systemctl show -p MainPID foo); [ \"$$MainPID\" -ne 0 ] && exec bar -p $$MainPID || выход 1'

Этот сценарий можно улучшить, но вы поняли идею.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.