安装
代码语言:javascript复制sudo apt update
sudo apt install inotify-tools
监听/usr/local/src 目录
代码语言:javascript复制inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f %e' -e modify,delete,create,attrib /home/xj/tmp
参数:
- • -m 持续监听
- • -r 使用递归形式监视目录
- • -q 减少冗余信息,只打印出需要的信息
- • -e 指定要监视的事件,多个时间使用逗号隔开
- • –timefmt 时间格式
- • –format 监听到的文件变化的信息
- • –timefmt 说明:
- • ymd分别表示年月日,H表示小时,M表示分钟
–format说明:
执行上面的命令之后,在监听的目录下创建一个1.txt文件,得到如下结果:
代码语言:javascript复制22/03/18 17:22 /usr/local/src/ 1.txt CREATE
22/03/18 17:22 /usr/local/src/ 1.txt ATTRIB
这个脚本的功能是循环监听文件或目录的增删改事件,当事件发生执行设置的脚本文件。
代码语言:javascript复制优化这个脚本,当监控的文件有有增删改时,出发一个脚本语句
#!/bin/sh
filename=$1
script=$2
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f %e' -e modify,delete,create $filename
do
MODIFY|CREATE|DELETE)
bash $script ;;
done
代码语言:javascript复制#!/bin/bash
filename=$1
script=$2
while inotifywait -r -q -e modify,delete,create "$filename"; do
bash "$script"
done
shell脚本后台执行
nohup
使用nohup,其中test.sh为所执行的脚本,out.txt为输出信息的地方。
代码语言:javascript复制echo "echo 'xiaojing' >> good.txt" > todo.sh #假设执行的脚本是这样子
nohup bash test.sh /home/xj/tmp 'todo.sh' > out.txt &
我有个大胆的想法
小伙伴在平常有没有遇到以下这种情况:遇到技术难题时,网上教程一堆堆,优秀的很多,但也有很多是过时的,或者是copy来copy去,甚至错别字都没改。