9

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…).

1
  • 4
    Does systemctl list-units --state=failed not provide what you want?
    – jscott
    Commented Jun 21, 2017 at 18:15

2 Answers 2

11

Try

sudo systemctl list-units --failed

or

sudo systemctl list-units --state=failed
1
  • or just systemct --failed
    – rkachach
    Commented Jun 8, 2022 at 8:18
1

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/'
  UNIT    LOAD   ACTIVE SUB       DESCRIPTION
● 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.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .