我有一个 Debian 扩展区,我在其中transmission-daemon
作为服务运行。
我将种子文件保存在安装在/mnt/external-disk
. 这个磁盘有一个ext4
文件系统,我/etc/fstab
用 uuid映射了它。
问题是:
当服务transmission-daemon
在启动时启动时,它不会检查外部文件系统是否已经安装,因此它没有在上面找到文件,并且我收到一个数据错误并且没有播种 torrent 文件,但是服务启动了。
为了解决这个问题,我检查了systemd
文档,发现缺少的内容:
该生产线RequiresMountsFor=
在[Unit]
一节的transmission-daemon.service
文件位于下面的树/lib/systemd/
。在我用挂载点的路径添加那一行后,/mnt/external-disk
问题消失了,服务工作正常。如果我重新启动机器,则服务正在运行,并且文件已播种。
这一直有效,直到我有一个涉及apt-get dist-upgrade
包的地方transmission-daemon
并在它停止之后。所以我检查了transmission-daemon.service
,我发现我所做的修改丢失了。
我RequiresMountsFor=
用正确的路径再次添加了该行,问题再次得到解决。
我的问题是:如何使这种修改持久化?
Ste*_*itt 19
您应该使用 中的单位覆盖该单位/etc
。最简单的方法是使用systemctl edit
:
sudo systemctl edit transmission-daemon
Run Code Online (Sandbox Code Playgroud)
将打开一个编辑器并允许您创建一个覆盖片段。
覆盖片段可确保将包单位(in /lib
)的未来更改考虑在内:引用将是包的单位,您的覆盖应用在顶部。在你的情况下,你需要使用的只是一个.conf
文件 in /etc/systemd/system/transmission-daemon.service.d/
,只包含部分和RequiresMountsFor
行。systemctl edit
将为您执行此override.conf
操作,在适当的位置创建一个文件。
或者,您可以将整个/lib/systemd/system/transmission-daemon.service
单元复制到/etc/systemd/system
并进行编辑。同样,systemctl edit
可以选择为您解决这个问题--full
。
在systemd.unit
文档中查找“示例 2. 覆盖供应商设置”以获取详细信息。