[Pkg-systemd-maintainers] Bug#729676: systemd: service command has wrong exit code for unknown service

Michael Biebl biebl at debian.org
Thu Nov 28 01:21:27 GMT 2013


Hi Stephen,

Am 20.11.2013 08:41, schrieb Stephen Gran:
> This one time, at band camp, Michael Biebl said:
>> Am 15.11.2013 17:18, schrieb Stephen Gran:
>>> Package: systemd
>>> Version: 44-11
>>> Severity: normal
>>>
>>> Hi,
>>>
>>> steve at varinia:~$ sudo systemctl disable NetworkManager.service
>>> rm '/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service'
>>> rm '/etc/systemd/system/multi-user.target.wants/NetworkManager.service'
>>> rm '/etc/systemd/system/network-manager.service'
>>> steve at varinia:~$ sudo service network-manager stop
>>> [ ok ] Stopping network-manager (via systemctl): network-manager.service.
>>> steve at varinia:~$
>>>
>>> This probably should have failed, or mentioned that it didn't know what
>>> I was talking about.
>>
>> This service isn't unknown, you still have
>> /etc/init.d/network-manager (and systemctl status
>> network-manager.service) should tell you that it is using the legacy
>> SysV init script. The "Alias" symlink in network-manager should probably
>> be shipped in the network-manager package directly instead of creating
>> it dynamically [1]
> 
> steve at varinia:~$ pgrep NetworkManager
> 22753
> steve at varinia:~$ sudo systemctl disable NetworkManager.service
> rm '/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service'
> rm '/etc/systemd/system/multi-user.target.wants/NetworkManager.service'
> rm '/etc/systemd/system/network-manager.service'
> steve at varinia:~$ sudo service network-manager stop
> [ ok ] Stopping network-manager (via systemctl): network-manager.service.
> steve at varinia:~$ pgrep NetworkManager
> 22753
> steve at varinia:~$ sudo systemctl status NetworkManager.service
> NetworkManager.service - Network Manager
>           Loaded: loaded (/lib/systemd/system/NetworkManager.service; disabled)
>           Active: active (running) since Tue, 19 Nov 2013 15:15:45 +0000; 16h ago
>         Main PID: 22753 (NetworkManager)
>           CGroup: name=systemd:/system/NetworkManager.service
>                   └ 22753 /usr/sbin/NetworkManager --no-daemon
> 
> systemd should either stop the service, or the service command should
> exit non-zero.

The isssue here is, that after you've run systemctl disable,
network-manager.service and NetworkManager.service become disconnected,
they are two *different* services now as they aren't linked anymore via
the network-manager.service symlink.
So, NetworkManager.service points to the native .service file,
network-manager.service points to the network-manager.service init script.
If you run
systemctl disable NetworkManager.service
systemctl status network-manager.service you'll get

# systemctl status network-manager.service
network-manager.service - LSB: network connection manager
   Loaded: loaded (/etc/init.d/network-manager)
   Active: inactive (dead)
# systemctl status NetworkManager.service
NetworkManager.service - Network Manager
   Loaded: loaded (/lib/systemd/system/NetworkManager.service; disabled)
   Active: active (running) since Do 2013-11-28 01:59:37 CET; 21min ago
 Main PID: 14491 (NetworkManager)


So, systemctl stop network-manager.service is simply a no-op and the
return code is actually correct.

As I wrote, the correct way to deal with such issues is probably to ship
those Alias symlinks in the package itself, so they are not removed on
systemctl disable NetworkManager.service
-- 
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 901 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-systemd-maintainers/attachments/20131128/95af25d7/attachment-0002.sig>


More information about the Pkg-systemd-maintainers mailing list