4

I moved most of my biggest files to a removable disk, some of these files are also torrents that I would like to seed. I use deluged as my torrent client which is started by systemd on my user. Now, the drive may be plugged at boot time or mounted at later date, which of course causes deluged to be confused and complain that the files are a mismatch. The most naive solution is to only start deluged service after the device is mounted and that's what I plan to do.

I've seen these answers which suggest using RequiresMountsFor and according to systemctl --user show deluged seems to do what I want:

After=basic.target -.slice home.mount network-online.target media-braiam-AA64B45
RequiresMountsFor=/media/braiam/AA64B45A64B42AC9 /home/braiam

Now, that allows the unit to be started if I have mounted the device, but it doesn't stops the unit when the device is being unmounted, nor seems to start the service when the device is being mounted.

In summary:

  • The service starts only if the device is mounted or can be mounted
  • The service will stop if the device is being unmounted
  • The service will start if the device is mounted
  • The device will stay mounted if the service is stopped.

This is what I've managed:

[Unit]
Description=Deluge Bittorrent Client Daemon
After=network-online.target
RequiresMountsFor=/media/braiam/id/
BindsTo=media-braiam-id.mount

For now, this stops the service when it's being unmounted, starts only if the mount point can be mounted and tries to mount the device. It won't mount the device, since only root can mount it (I think if I install a unit for the system, this will be possible). It doesn't start if the mount point becomes available, however. How do I achieve what I want?

1
  • Not sure. Description=Deluge Bittorrent Client Daemon RequiresMountsFor=/media/braiam/id/ After=media-braiam-id.mount
    – user192526
    Commented Jan 8, 2017 at 22:06

1 Answer 1

3

You need BindsTo= to start and stop both units together. But remember systemd tends to parallelize. You also need After= for the mount to be fully active before starting the service. It also has the opposite effect: the service must be fully stopped before the mount can be taken down.

[Unit]
Description=Deluge Bittorrent Client Daemon
After=network-online.target
BindsTo=media-braiam-id.mount
After=media-braiam-id.mount

Simlar question on stack overflow: https://stackoverflow.com/questions/48687099/filesystem-are-unmounted-before-the-services-are-stopped-in-systemd/52882065#52882065

1
  • How to solve then this ? @philippe-a efr.service: Unit is bound to inactive unit media-pi-TOSHIBA.mount. Stopping, too.
    – MR.GEWA
    Commented Oct 13, 2020 at 11:16

You must log in to answer this question.

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