我只想分享一些关于我的第一个 systemd 配置的想法。到目前为止,我只使用了 start 和 stop 之类的命令,这次我想要更多。
我有一台运行 arch 的 raspberry-pi。我有一个外部 USB HDD 来存储数据。我想运行 samba 来共享该外部驱动器上的文件夹。
问题:如果没有连接 HDD,Samba 就无法启动。如果稍后连接 HDD,Samba 就会启动。如果在操作过程中断开 HDD,Samba 就会停止(可能会丢失数据,我想我无能为力)。
阅读示例和 systemd 手册后,我得到了以下信息:
/etc/fstab
UUID="6509-D18E" /storage vfat defaults,nofail,x-systemd.device-timeout=20 0 2
/etc/systemd/system/smbd.service:
[Unit]
Description=Samba SMB/CIFS server
After=network.target nmbd.service winbindd.service
BindsTo=storage.mount
RequiresMountsFor=/storage
[Service]
Type=forking
PIDFile=/var/run/smbd.pid
ExecStart=/usr/bin/smbd -D
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target storage.mount
关键要素包括不会失败在 fstab 中,如果缺少该项,我的整个系统在启动时都会被锁定。我认为它会告诉 systemd 如果硬盘未连接则继续。
这通缉者用于在硬盘已连接的情况下启动 Samba,并且绑定到如果挂载点消失则负责停止 samba。
我是否遗漏了什么或者是否有更优雅的解决方案?
干杯