File 创建文件时如何通知linux(systemd)进程采取操作

File 创建文件时如何通知linux(systemd)进程采取操作,file,process,systemd,File,Process,Systemd,不知道从哪里开始回答上述问题 我使用一些文件处理功能运行systemd进程(A) 要求是在(A)由另一个进程(B)在某个位置(比如/tmp/abc.txt)创建文件时通知(B) 收到通知后,(A)可以打开文件并进行解析/缓存,然后关闭它。我相信如果(A)已经在处理某些事情,我们可以将请求排队 这个要求可能吗?如果是,是否有传统/系统设计模式?如果没有,能否以其他方式实现 您可以使用Tesseract提到的inotifyAPI,或者使用systemd path单元(在引擎盖下也使用inotify)

不知道从哪里开始回答上述问题

我使用一些文件处理功能运行systemd进程(A)

要求是在(A)由另一个进程(B)在某个位置(比如/tmp/abc.txt)创建文件时通知(B)

收到通知后,(A)可以打开文件并进行解析/缓存,然后关闭它。我相信如果(A)已经在处理某些事情,我们可以将请求排队


这个要求可能吗?如果是,是否有传统/系统设计模式?如果没有,能否以其他方式实现

您可以使用Tesseract提到的
inotify
API,或者使用systemd path单元(在引擎盖下也使用
inotify
):


请注意,这将在每次创建文件时启动
foo.service
,而不是通知它。从你的问题来看,我不清楚这是否适合你的情况——如果你想对文件执行一些操作,然后在下次文件弹出之前什么都不做,那应该可以(在这种情况下退出服务并设置
Type=oneshot

你可以使用
inotify
API,如Tesseract所述,或使用systemd path装置(在发动机罩下也使用
inotify
):


请注意,这将在每次创建文件时启动
foo.service
,而不是通知它。从您的问题来看,我不清楚这是否适合您的情况–如果您想对文件执行一些操作,然后在下次文件弹出之前什么都不做,那应该可以(在这种情况下,退出服务并设置
Type=oneshot

将inotify(或inotifywait命令)对您有用吗?这似乎与编程无关。@Tesseract:谢谢。我认为inotify似乎很接近我想要的。让我朝这个方向探索。@Alnitak:我相信任何与API或设计模式有关的东西都与编程有关。我可能错了。如果您觉得有必要,可以否决我的问题。inotify(或inotifywait命令)对您有用吗?这似乎与编程无关。@teseract:谢谢。我认为inotify似乎很接近我想要的。让我朝这个方向探索。@Alnitak:我相信任何与API或设计模式有关的东西都与编程有关。我可能错了。如果你觉得可以,你可以投票否决我的问题。谢谢卢卡斯。这似乎是inotify的一个不错的替代方案。让我来探讨这两种选择,看看哪种方法更干净、更灵活。谢谢卢卡斯。这似乎是inotify的一个不错的替代方案。让我探讨这两种选择,看看哪一种方法更干净、更灵活。
# foo.path
[Path]
PathExists=/tmp/abc.txt

# foo.service
[Service]
ExecStart=/usr/local/bin/A