跳转至

Linux文件检测执行脚本

介绍

在Linux中,可以使用inotify工具监视文件系统中特定路径及其子路径下的文件变化,并在检测到变化时执行特定命令。

inotify工具配置

  1. 安装inotify-tools:首先确保安装了inotify-tools,如果没有安装,可以通过包管理器安装。
apt-get install inotify-tools
  1. 编写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及其子目录下的文件变化,一旦有文件发生修改、创建或删除,将执行相应的操作。

  1. 赋予执行权限:为Shell脚本添加执行权限。

  2. 运行Shell脚本:运行Shell脚本,开始监听文件变化并执行相应命令。

现在,当/home/test路径及其子路径下的文件发生变化时,脚本将打印相应的消息,并可以在脚本中添加执行mkdoc build或其他命令的逻辑。

脚本设置为系统服务

要保证脚本在开机时启动并持续运行,你可以将脚本设置为系统服务,并将其添加到启动项。以下是一种方法:

  1. 创建 Systemd 服务单元文件

/etc/systemd/system/ 目录下创建一个 .service 文件,例如 mkdoc_monitor.service

vim /etc/systemd/system/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 替换为你实际脚本的完整路径。

  1. 重新加载 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) 辅助完成