39 lines
1.5 KiB
Text
39 lines
1.5 KiB
Text
;;;;;
|
|
title: Mounting music dir before MPD
|
|
tags: systemd, mpd, config
|
|
date: 2013-11-24 14:03
|
|
format: md
|
|
;;;;;
|
|
|
|
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.
|