Linux文件检测执行脚本¶
介绍¶
在Linux中,可以使用inotify工具监视文件系统中特定路径及其子路径下的文件变化,并在检测到变化时执行特定命令。
inotify工具配置¶
- 安装inotify-tools:首先确保安装了inotify-tools,如果没有安装,可以通过包管理器安装。
- 编写Shell脚本:创建一个Shell脚本来监听文件变化并执行相应的命令。创建一个名为
watch_files.sh
的文件,将以下内容添加到该文件中。
#!/bin/bash
DIRECTORY="/home/test" # 要监视的目录
inotifywait -m -r -e modify,create,delete "${DIRECTORY}" |
while read path action file; do
echo "File ${file} has been ${action}ed"
# 在这里添加执行命令的逻辑
# mkdocs build
done
请注意,上述脚本会监视目录/home/test
及其子目录下的文件变化,一旦有文件发生修改、创建或删除,将执行相应的操作。
-
赋予执行权限:为Shell脚本添加执行权限。
-
运行Shell脚本:运行Shell脚本,开始监听文件变化并执行相应命令。
现在,当/home/test
路径及其子路径下的文件发生变化时,脚本将打印相应的消息,并可以在脚本中添加执行mkdoc build
或其他命令的逻辑。
脚本设置为系统服务¶
要保证脚本在开机时启动并持续运行,你可以将脚本设置为系统服务,并将其添加到启动项。以下是一种方法:
- 创建 Systemd 服务单元文件:
在 /etc/systemd/system/
目录下创建一个 .service
文件,例如 mkdoc_monitor.service
:
在该文件中添加以下内容:
[Unit]
Description=Monitor and build Mkdoc
[Service]
ExecStart=/path/to/your/script.sh
[Install]
WantedBy=multi-user.target
将 /path/to/your/script.sh
替换为你实际脚本的完整路径。
- 重新加载 systemd 守护程序并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable mkdoc_monitor.service
sudo systemctl start mkdoc_monitor.service
现在,你的脚本将在系统启动时自动启动,并作为一个后台服务持续运行。如果需要停止服务,可以使用 sudo systemctl stop mkdoc_monitor.service
命令。
这篇文章由 ChatGPT (openai.com) 辅助完成