![在 Ubuntu 上,如何设计一个监视器来在将文件写入目录时运行一个进程?](https://linux22.com/image/512174/%E5%9C%A8%20Ubuntu%20%E4%B8%8A%EF%BC%8C%E5%A6%82%E4%BD%95%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E7%9B%91%E8%A7%86%E5%99%A8%E6%9D%A5%E5%9C%A8%E5%B0%86%E6%96%87%E4%BB%B6%E5%86%99%E5%85%A5%E7%9B%AE%E5%BD%95%E6%97%B6%E8%BF%90%E8%A1%8C%E4%B8%80%E4%B8%AA%E8%BF%9B%E7%A8%8B%EF%BC%9F.png)
我想在将文件写入 Ubuntu 上的目录时运行一个进程。我知道我可以编写一个监视器来执行此操作。(即不是基于事件的触发器而是“监视器”)。
为了实现这一点 - 除了用 C 编写一个无限长的 for 循环来轮询目录之外 - 您还可以采取哪些步骤来实现这一点?
当文件写入目录时,您需要采取哪些步骤在 Ubuntu 上实现运行进程(另一个应用程序)的监视器?
(这样做的原因是写入文件的进程具有一组有限的权限(例如 tomcat6),但执行的进程(现有软件包)需要 root 权限(即在 chroot jail 中运行进程))
答案1
如果您正在编写 C 语言,为什么不直接使用该inotify
库?
或者,如果您只是编写一个简单的 shell 脚本,则可以使用watch
。两者均存在于所有现代 Linux 变体中。
答案2
请参阅此 StackOverflow 问题:
https://stackoverflow.com/questions/511463/monitor-directory-for-changes
另外,如果无法安装 inotify,请检查以下编程方法: