用于 s3ql 远程 FUSE 安装的 systemd 脚本

用于 s3ql 远程 FUSE 安装的 systemd 脚本

我发现 systemd 非常令人兴奋,但我该如何使用它来编写脚本来挂载s3ql文件系统?例如,s3ql 开发人员提供了一个新贵配置就可以了。

具体来说,启动时必须运行 mount.s3ql(以所需用户身份运行,因为这是 FUSE 文件系统),关机时必须运行 umount.s3ql。此外,如果我们想在挂载之前 fsck.s3ql 文件系统,或者在启动后和关机前运行 Unison 同步步骤(我在自己的 upstart 上进行了所有修改),该怎么办?

乍一看,我会认为我想安装一个支架单元在 systemd 上,但看起来该服务单元实际上更适合执行前和执行后的启动命令。(所有手册页均可用这里

我依赖什么 .target 来编码对网络连接的依赖关系?

答案1

乍一看,对于mount.s3qlumount.s3ql,通用.mount单位似乎比较合适。命令mountsystemd挂载时支持助手。但是,助手必须支持传递选项的标准方法,即mount.fstype-o optionss3ql不会。此外,同样的限制也适用与 /etc/fstab 一样

.service因此,使用一个调用所需命令的单元实际上可能会更好:

[单元]
[电子邮件保护]
[电子邮件保护]

[服务]
类型=分叉
环境=AUTHFILE=/path/to/authinfo2
ExecStart=/usr/sbin/mount.s3ql --authfile ${AUTHFILE} ${BUCKET} ${MOUNTPOINT}
ExecStop=/usr/sbin/umount.s3ql ${MOUNTPOINT}
超时时间=5分钟

由于没有标准的网络配置方法,更不用说实际检查连接是否正常工作的方法,因此没有标准systemd目标就是您想要的。虽然有network.target,但是当连接尚未可用时,它可能认为自己已启动。

如果您正在使用 NetworkManager,那么您的发行版可能已经包含一个运行的单元nm-online– 例如,Arch 称之为NetworkManager-wait-online.service

[单元]
需要=NetworkManager-wait-online.service
之后=NetworkManager-wait-online.service

相关内容