尽管两个答案都是正确的,但是我想在讨论中加上两分钱,因为当我寻找它时,我错过了一些说明和示例。
- 将文件系统添加到
/etc/fstab
mount -a
挂载fstab中提到的所有文件系统的类型
- 查找使用以下命令生成的systemd单元
systemctl list-units | grep '/path/to/mount' | awk '{ print $1 }'
(应返回以结尾的内容.mount
)
- 将找到的安装单元添加到文件中
的
After=
语句中*.service
这是一个my-daemon
在启动时启动服务的示例,但是在网络就绪后,CIFS共享将安装在/mnt/cifs
,并且vpn-launch
服务已启动:
/ etc / fstab
//servername/sharename /mnt/cifs cifs defaults,some,other,options 0 0
注意:您可能要添加nofail
到fstab选项(例如,使用外部驱动器时)。否则,如果未连接设备,则计算机将无法启动。参见ArchWiki的fstab文章
/etc/systemd/system/my-daemon.service
[Unit]
Description=Launch My Daemon
Requires=vpn-launch.service mnt-cifs.mount
After=network.target vpn-launch.service mnt-cifs.mount
[Service]
ExecStart=/path/to/my-daemon
[Install]
WantedBy=multi-user.target
不要忘记启用该服务,使其在启动时启动: systemctl enable my-daemon
请注意,这也适用于其他文件系统(NFS,HDD等)。
如前所述,两个答案都是正确的,我鼓励大家阅读它们,但是对我来说,几个示例可以为我节省一些时间。
更新(2019-06-25):
- 添加了有关fstab选项的注释,以防止在使用外部驱动器时引导锁定
- 添加
mnt-cifs.mount
到Requires=
列表中,导致在my-daemon.service
未成功安装CIF挂载时导致启动失败
systemd-remount-fs
到After
列表中,是否可行?