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 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. Commented Oct 13, 2020 at 11:16

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.