linux 文件夹监控文件夹改动(基于fswatch)

使用场景: 当服务器文件夹的文件内容有改动的时候通知管理员或者执行某些操作,如easyswoole框架,启动的时候是先加载到内存的,有文件更新了,需要重启服务器才能生效,每次更改文件都重启服务器,开发效率会大大降低,所以需要监控文件夹的改动,如果有文件发生变化,自动停止服务器,然后启动服务器,不需要每次更新代码都手动重启。
之前发过一遍easyswoole1.0X版本的基于inotify的在框架里面继承的热更新(不适合2.0版本),这篇用fswatch和shell适合所有的文件热更新,楼主亲测,没毛病。

本文示例:监控 /easyswoole/App文件夹的内容改动,有改动重启swoole server 并记录重启日志

安装fswatch

wget https://github.com/emcrisostomo/fswatch/releases/download/1.11.2/fswatch-1.11.2.tar.gz
tar -xvzf fswatch-1.11.2.tar.gz
cd fswatch-1.11.2
sudo ./configure
sudo make
sudo make install sudo ldconfig

vim fswatch.sh
chmod 755 fswatch.sh 赋予脚本执行权限,copy内容到 fswatch.sh

#!/bin/bash
DIR=$1

if [ ! -n "$DIR" ] ;then
    echo "you have not choice Application directory !"
    exit
fi

php easyswoole stop
php easyswoole start --d

fswatch $DIR | while read file
do
   echo "${file} was modify" >> ./Temp/reload.log 2>&1
   php easyswoole reload
done

运行脚本监听/easyswoole/App文件夹的改动

 ./fswatch.sh  /easyswoole/App  

你可能感兴趣的:(服务器监控)