When I run systemctl status on a specific server, I get the following output:

● ⟨host-name⟩
    State: degraded
     Jobs: 0 queued
   Failed: 1 units
    Since: Fr 2017-06-09 00:34:27 UTC; 1 weeks 5 days ago
   CGroup: /

How can I find out which of the services is the one that failed?

I tried it with systemctl is-failed '*', but that doesn't yield any meaningful output (it outputs 39 lines active one failed line and then some more (> 100) activelines…).

  • 3
    Does systemctl list-units --state=failed not provide what you want? – jscott Jun 21 '17 at 18:15

It seems like is-failed is the wrong sub command… who would have guessed.

here is some perl hackery to get the right answer:

$ systemctl list-units | perl -lanE'print if $F[2] !~ /active/'
● vboxautostart-service.service                                                             loaded failed failed    vboxautostart-service.service

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

207 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

And systemctl is also that nice to clutter stderr with informational output in a way that we only get the output we want.



sudo systemctl list-units --failed


sudo systemctl list-units --state=failed

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.