Für ein Programm musste ich zu einer Prozess-ID die Systemd-Unit ermitteln, um dann den Prozess neustarten zu können. Mithilfe von systemctl geht es, indem man die Ausgabe auseinanderpflückt. Im Quelltext habe ich dann aber entdeckt, dass man die Units auch über dbus ermitteln kann.
% systemctl status -n0 $pid |sed '/^● /!d; s///; s/ .*//'
% echo -e $(dbus-send --system --print-reply=literal \
--dest=org.freedesktop.systemd1 /org/freedesktop/systemd1 \
org.freedesktop.systemd1.Manager.GetUnitByPID uint32:$pid \
|sed 's,.*/,,; s/_/\\x/g')