<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Feb 6, 2015 at 5:26 PM, George Karakougioumtzis <span dir="ltr"><<a href="mailto:mad-proffessor@hotmail.com" target="_blank">mad-proffessor@hotmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi. Congrats for the near perfect job on systemd! I was searching for a<br>
directive to execute a script upon systemd service failure. I would like<br>
to receive desktop notifications about such  failures. I stumbled upon<br>
OnFailure and FailureAction but these have hardcoded list of actions?<br>
</blockquote><div><br></div><div>One of those actions is "start an arbitrary unit", which could handle notifications... Unfortunately it doesn't actually pass any failure information to that unit. So, instead, you might have to watch the system log (journal) for unit failure notices. (I would normally have said that the journal makes it easy to filter for them, but quite strangely, these ones don't have a MESSAGE_ID attached...)</div><div><br></div><div>Maybe others will have better suggestions.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Any hints how to get notified (with notify-send most likely)?</blockquote><div><br></div><div>systemd calling notify-send isn't going to happen – as a service, it runs "outside" your desktop session, and has no access to its D-Bus session bus, which tends to be started at a random address. (There might even be several sessions, not just one!) And even considering the future "user bus" plans (which would put the session bus at a known fixed location), the whole idea of having a service inject something into a desktop session is really ugly. Even Microsoft realized that and implemented "session 0 isolation" in VIsta.</div><div><br></div><div>In other words, such a notifier would need to be started from within your desktop session, connect <i>to</i> systemd (either by waiting for signals on the system bus or by watching the journal messages), and idle in background waiting for some unit to fail. With DBus it could be a simple 10-line script, waiting for signals on one bus and calling Notify() on another...</div></div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Mantas Mikulėnas <<a href="mailto:grawity@gmail.com" target="_blank">grawity@gmail.com</a>></div></div>
</div></div>