摘要:当 Linux 系统目录中有新文件创建时执行命令,可以通过组合使用工具和脚本实现监控。一种常见的方法是使用inotify-tools,这是一个允许您监视文件系统事件的实用程序,与 shell 脚本一起使用。
当 Linux 系统目录中有新文件创建时执行命令,可以通过组合使用工具和脚本实现监控。一种常见的方法是使用 inotify-tools,这是一个允许您监视文件系统事件的实用程序,与 shell 脚本一起使用。
首先,你需要安装 inotify-tools,通常可以使用包管理器安装它。
sudo apt update sudo apt install inotify-tools接下来,创建一个 shell 脚本,该脚本使用 inotifywait 来监视目录中是否有新文件,然后在检测到新文件时调用 API,下面是这个脚本的简单示例:
#!/bin/bash# Directory to monitorMONITOR_DIR="/path/to/your/directory"# Your custom command# CUSTOM_COMMAND="curl -X POST -d @newFile http://your.api.endpoint"# Monitor for new files and call the APIinotifywait -m -e create --format '%w%f' "$MONITOR_DIR" | while read NEWFILEdoecho "New file detected: $NEWFILE"# Uncomment to execute custom command#eval $CUSTOM_COMMANDdone在此脚本中,将 “/path/to/your/directory” 替换为你想监控的目录,将“http://your.api.endpoint”替换为你的上传 API 地址,您也可以修改 CUSTOM_COMMAND 包括其它数据或参数选项。
修改文件权限,让其可以执行
chmod +x monitor.sh执行脚本
bash monitor.sh如果您希望这个脚本在后台连续运行,您可以使用 nohup 或 tmux 会话中运行它。
For example:
nohup ./monitor.sh &确保您的脚本已正确编写和测试。将其放在合适的目录,例如: /usr/local/bin/
sudo mv monitor.sh /usr/local/bin/确保它是可执行的
sudo chmod +x /usr/local/bin/monitor.sh创建一个新的 systemd 服务文件
sudo nano /etc/systemd/system/monitor.service将以下内容添加到文件中
[Unit]Description=File Monitor Service[Service]ExecStart=/usr/local/bin/monitor.shRestart=alwaysUser=nobodyGroup=nogroup[Install]WantedBy=multi-user.target保存并关闭该文件,重新加载 systemd 管理器配置
sudo systemctl daemon-reload设置开机启动
sudo systemctl enable monitor.service启动服务
sudo systemctl start monitor.service检查服务状态
sudo systemctl status monitor.service补充说明这个脚本是一个基本的例子。根据具体需求,您可能需要对其进行修改。如果需要更复杂的监视或处理,请考虑使用更健壮的解决方案或编程语言。确保您的脚本是自包含的,不需要交互式输入。Systemd 服务不是为交互使用而设计的。如果您的脚本写入日志,请确保它写入一个它有权访问的位置。course-tencent-cloud(酷瓜云课堂 - gitee 仓库)course-tencent-cloud(酷瓜云课堂 - github 仓库)来源:鸠摩智首席音效师
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!