Start/stop a user unit whenever a device has been mounted/unmounted
Clash Royale CLAN TAG#URR8PPP
up vote
1
down vote
favorite
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?
systemd
add a comment |Â
up vote
1
down vote
favorite
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?
systemd
Not sure.Description=Deluge Bittorrent Client Daemon RequiresMountsFor=/media/braiam/id/ After=media-braiam-id.mount
â user192526
Jan 8 '17 at 22:06
add a comment |Â
up vote
1
down vote
favorite
up vote
1
down vote
favorite
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?
systemd
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?
systemd
systemd
edited Apr 13 '17 at 12:36
Communityâ¦
1
1
asked Jan 8 '17 at 17:48
Braiam
22.7k1972133
22.7k1972133
Not sure.Description=Deluge Bittorrent Client Daemon RequiresMountsFor=/media/braiam/id/ After=media-braiam-id.mount
â user192526
Jan 8 '17 at 22:06
add a comment |Â
Not sure.Description=Deluge Bittorrent Client Daemon RequiresMountsFor=/media/braiam/id/ After=media-braiam-id.mount
â user192526
Jan 8 '17 at 22:06
Not sure.
Description=Deluge Bittorrent Client Daemon RequiresMountsFor=/media/braiam/id/ After=media-braiam-id.mount
â user192526
Jan 8 '17 at 22:06
Not sure.
Description=Deluge Bittorrent Client Daemon RequiresMountsFor=/media/braiam/id/ After=media-braiam-id.mount
â user192526
Jan 8 '17 at 22:06
add a comment |Â
1 Answer
1
active
oldest
votes
up vote
1
down vote
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
add a comment |Â
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
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
add a comment |Â
up vote
1
down vote
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
add a comment |Â
up vote
1
down vote
up vote
1
down vote
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
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
answered 2 mins ago
Philippe A.
1164
1164
add a comment |Â
add a comment |Â
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f335812%2fstart-stop-a-user-unit-whenever-a-device-has-been-mounted-unmounted%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Not sure.
Description=Deluge Bittorrent Client Daemon RequiresMountsFor=/media/braiam/id/ After=media-braiam-id.mount
â user192526
Jan 8 '17 at 22:06