Linux监听文件变化
此次的需求主要源于之前用 docker
部署 acme
自动更新 SSL 证书时,发现脚本中的重启 Nginx 这一步在容器中无法执行 , 因此这里改为监听宿主证书目录证书文件改变,宿主直接重启 Nginx.
这里是通过 inotify
来实现的 , 首先安装
安装 inotify
在 Ubuntu 或 Debian 系统上,可以使用以下命令安装:
1 | sudo apt-get update |
在 CentOS 或 RHEL 系统上:
1 | sudo yum install inotify-tools |
编写脚本
然后编写脚本 cert_listener.sh
1 |
|
这里根据自己需求进行修改 , 路径和文件都变量化了
后台启动
再修改权限 chmod +x cert_listener.sh
如果直接执行 , 则是前台监控文件变化 , 退出后就停止监控了 , 所以这里要通过后台启动
1 | nohup ./cert_listener.sh > /data/apps/certnotify/listener_invoke.log 2>&1 & |
设置自动运行(可选)
上面的设置如果服务器重启后就失效了 , 这里可以配置一个自启动服务
通过 systemd
设置服务:
创建一个新的 systemd 服务单元文件:
1 | sudo nano /etc/systemd/system/reload-nginx.service |
1 | [Unit] |
保存并退出后,执行以下命令启用并启动服务:
1 | sudo systemctl enable reload-nginx.service |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Halcyon Days!