如果文件更改如何自动重新启动systemd服务?

如果文件更改如何自动重新启动systemd服务?

我有一项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系统启动时会自行启动

相关内容