注册文件更改以执行操作

注册文件更改以执行操作

我遇到了以下问题:我在我的 web 服务器配置中做了一些自动更改(通过 web 界面),并且我想重新启动 apache。由于没有任何操作是由 root 执行的,因此我无法直接启动服务器。

我目前的解决方法是让 root 每分钟执行一次 cronjob,检查特定文件是否存在 (/tmp/restart.txt)。如果文件存在,则删除该文件并重新启动 apache。

其他用户只需触摸该文件即可调用此功能

$ touch /tmp/restart.txt

我现在的问题是:我可以避免使用 cronjob 并以某种方式创建一个侦听器,该侦听器每次在文件的 mtime 更改时都会被调用吗?在我看来,这将是一个更好的解决方案。

答案1

我们正在使用我看监控我们服务器上的文件更改。它使用 inotify,它包含在 Linux 内核 >= 2.6.13 中,并且依赖于 Perl,但我想如果您运行的是 Linux 系统,它应该可用。

iwatch -c "File %f changed >> /tmp/changed.txt" -e modify /path/to/monitor

-c指定要执行的命令,-e指定要监视的事件(全部在文档中)。可以/path/to/monitor是目录或文件。

答案2

cronjob 这样做会稍微更安全一些:

find /path/to/httpd.conf -newer /tmp/ars.dat -exec "/path/to/apache.rc restart;" -exec "touch -m /tmp/ars.dat;"

将参考文件放在 tmp 以外的其他地方可能也是个好主意。

相关内容