我有一项systemd
服务,它使用自定义文件在嵌入式 Linux 设备上启动程序。我想在修改/更改文件时自动启动此服务。在阅读systemd
手册时,我遇到了一个使用.path
单元文件执行此操作的解决方案。我的设置如下所示:
test.service
[Unit]
Description=MyApp
After=network-online.target
[Service]
WorkingDirectory=/data/test
ExecStart=/usr/bin/myapp -c /data/test/myconfig.cfg
[Install]
WantedBy=multi-user.target
我创建了一个test-restart.service
包含内容的文件:
[Service]
Type=OneShot
ExecStart=/usr/bin/systemctl restart test.service
另外,还有一个test-restart.path
单元文件:
[Path]
Unit=test-restart.service
PathChanged=/data/test/myconfig.cfg
[Install]
WantedBy=multi-user.target
但是,据我了解,我需要执行systemctl enable --now test-restart.path
,如果文件被修改然后test-restart.service
被激活,这将触发,这将重新启动test.service
。但是,我不知道如何systemctl enable --now test-restart.path
自动调用它?我的意思是,我应该每次都手动执行此操作(或者可能只是第一次?)还是由 处理systemctl
?如果设备重新启动会发生什么?我们应该systemctl enable --now test-restart.path
再次手动调用吗?
提前致谢。
PS:如果这里缺少任何信息,请告诉我
答案1
出色地
systemctl enable --now test-restart.path
设置开机自动启动。- 它添加一个到指定启动级别的软链接。
- 这是一种持续的行为
systemd
启动时就会启动- 你可以看看它的反向依赖
systemctl list-dependencies test-restart.path --reverse
- 无需
systemctl enable --now test-restart.path
再次手动执行 - 设备只需重启一次
test-restart.path
系统启动时会自行启动