[arch-general] Automatically stop systemd service

Robbie Smith zoqaeski at gmail.com
Thu Mar 28 03:23:03 EDT 2013


TL;DR: More toying with mobile broadband and systemd; would like help 
automatically stopping service depending on device availability.

I’ve been adjusting the .service file for netcfg at ppp-mobile.service so 
it plays nicely with my modem. It will only start if the USB modem is 
plugged in and exposing a serial port to the computer, and when I 
manaually stop the unit, the ppp daemon is also killed, so it doesn’t 
lock the device and reconnect automatically upon the device being 
detected again, thus *bringing up the network interface when systemd and 
netcfg say it is down*.

     /etc/systemd/system/netcfg at ppp-mobile.service:
     ----------------------------------------------
     .include /usr/lib/systemd/system/netcfg at .service
     [Unit]
     Description=Netcfg networking service for mobile broadband point 
to-point protocol.
     ConditionPathExists=/dev/ttyUSB0

     [Service]
     KillMode=control-group


What I cannot figure out how to do is automatically stop the service if 
the device is unplugged, similar to how ifplugd works for wired ethernet 
interfaces.

I’ve read the manual pages and asked Google, and I cannot seem to find 
more detailed information. I think it may be possible to write a service 
that will use udev’s polling capabilities, but then I have to somehow 
link that unit to the netcfg one such that it gets stopped and started 
when netcfg is, which implies it would listen to udev, wait for the 
device to be unplugged, then stop netcfg and kill itself.

systemd's PartOf= may offer an answer, but I don’t really know how to 
tie it all together.

How should I best go about this? Another systemd service, a udev rule, 
or is it possible to further modify the ppp-mobile service?

regards,
Robbie


More information about the arch-general mailing list