我有以下问题:我在我的Web服务器configuration(通过Web界面)进行一些自动更改,我想重新启动Apache。 由于没有任何操作是由root执行的,我不能直接启动服务器。
我目前的解决方法是有一个cronjob(每分钟)的根,检查是否存在一个特定的文件(/tmp/restart.txt)。 如果文件存在,它将被删除,并重新启动apache。
这可以由其他用户通过简单地触摸文件来调用
$ touch /tmp/restart.txt
我现在的问题是:我可以避免cronjob,并以某种方式创build一个侦听器,每次文件的mtime更改时调用? 在我看来这将是一个更好的解决scheme。
我们正在使用iwatch监视服务器上的文件更改。 它使用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可以是一个目录或文件。
cronjob这样做会稍微安全些:
find /path/to/httpd.conf -newer /tmp/ars.dat -exec "/path/to/apache.rc restart;" -exec "touch -m /tmp/ars.dat;"
把参考文件放在tmp以外的地方也可能是个好主意。