Echo Area

Mounting music dir before MPD

24 November 2013 2:03 PM (systemd | mpd | config)

Systemd allows you to specify a program to run before running the main daemon (or program) with ExecStartPre. This can, for instance, be used to run a mount command before starting mpd. By adding under the [Service] heading:

ExecStartPre=/usr/bin/mount /mnt/music

Now I have already setup my fstab to know what to mount on /mnt/music, but of course that shouldn't be necessary. According to the systemd.service(5) man page it uses the same syntax as ExecStart, which tells us that one must use absolute file names since no shell is used to start them.

This also has the effect of stopping the ExecStart part from the .service from being executed if the ExecStartPre doesn't finish successfully. Which works out great in my case as I don't want to start mpd if my music directory didn't mount. If you want to ignore the exit status of (one of) the ExecStartPre commands you can prefix it with a -, for example:

ExecStartPre=-/usr/bin/mount /mnt/music

Which would continue running the ExecStart even if mounting failed.

Also know that there can be multiple ExecStartPre options and they will be executed serially, so for example:

ExecStartPre=/usr/bin/mount /mnt/music
ExecStartPre=-/usr/bin/mount /mnt/music2

This would fail if /mnt/music doesn't mount, but would continue just fine if /mnt/music did and /mnt/music2 didn't.

No responses

Leave a Reply