[systemd-devel] Stop all uninstalled units
tim at gfxmonk.net
Wed Jul 17 16:33:32 PDT 2013
I've posted a serverfault question , but it got no answers so I thought
I'd bring it to the mailing list:
I have some systemd units installed and running. Let's say I manually
uninstall foo.service by
- removing its .service (and .socket) files
- removing all symlinks (e.g from default.target.wants/)
I can run systemctl daemon-reload, and then I see:
# systemctl status foo.service
Loaded: error (Reason: No such file or directory)
Active: active (running) since Mon 2013-07-08 13:50:29 EST; 48s ago
Main PID: 1642 (node)
So systemd knows that it's not installed (i.e backed by a file), and that
it is running. Is there some command I can use to stop all running services
which no longer have a unit file?
I do not want to have to somehow know what I've uninstalled, or for the
command to work only in some circumstances - I want something that I can
run at any point, with no additional knowledge, that will stop all units
not backed by a unit file.
I've currently got a hacky script that:
- Runs `list-units` to get all unit names
- Then `show -p ActiveState -p UnitFileState $unit` on each
- It then runs `systemctl stop` on each unit with a UnitFileState of ""
(empty string), and ActiveState of anything but "failed".
This is almost certainly missing some edge case, as I couldn't really find
any documentation of these properties, it just seemed to be what occurred
with the examples I encountered.
I'm hoping there's a better way, can anyone point me in the right direction?
- Tim Cuthbertson.
(apologies if this email arrives on the list twice, I think the first time
didn't make it through because I wasn't subscribed to the list)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the systemd-devel