我想在某个特定文件的最后一次修改之后运行程序。该程序不应与其自身同时运行。如果在程序运行时修改了该文件,则应再次运行该程序。如果多次修改该文件,则不应多次运行该程序。
此设置主要可以用 systemd 单元建模。.service
具有 和 的单元Type=oneshot
不会RemainAfterExit=no
与自身同时运行。它可以用.path
配置了 的单元激活PathModified=...
,它会将多个修改合并为一个激活。到目前为止一切顺利。如果在单元运行时修改了文件,则该修改将变成一个激活,并且由于单元已在运行,因此此激活将被丢弃。因此,程序将不会再次运行。
是否有满足所有相关属性的变体?是否有其他更好的方法?