bash监控指定目次下的文件变更并执行相应动作

打印 上一主题 下一主题

主题 901|帖子 901|积分 2703

  1. #!/bin/bash
  2. dir_to_monitor="/home/sub_dir
  3. prev_files=$(ls -A $dir_to_monitor)
  4. #echo "prev_files: $prev_files"
  5. prev_files_file=$(mktemp)
  6. ls -A $dir_to_monitor > $prev_files_file
  7. while true; do
  8.     current_files=$(ls -A $dir_to_monitor)
  9.     #echo "current_files: $current_files"
  10.     current_files_file=$(mktemp)
  11.     ls -A $dir_to_monitor > $current_files_file
  12.     added_files=$(comm -13 $prev_files_file $current_files_file)
  13.     if [ -n "$added_files" ]; then
  14.         echo "新增文件: $added_files"
  15.         find /${dir_to_monitor}/*.sh -type f -exec sed -i '/network restart/a\route -n' {} \;
  16.         find /${dir_to_monitor}/.sh -type f -exec sed -i '1i\network start' {} \;
  17.     fi
  18. #    if [ -n "$removed_files" ]; then
  19. #        echo "删除文件: $removed_files"
  20. #    fi
  21.     # 删除之前的临时文件
  22.     rm $prev_files_file
  23.     # 将当前文件列表临时文件重命名为上一轮的文件列表临时文件,用于下一轮对比
  24.     mv $current_files_file $prev_files_file
  25.     sleep 1
  26. done
复制代码
在含有特定内容的某行后添加新行
       find /${dir_to_monitor}/*.sh -type f -exec sed -i '/network restart/a\route -n' {} \;
在每个文件开头添加新行
       find /${dir_to_monitor}/*.sh -type f -exec sed -i '1i\network start' {} \;
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

商道如狼道

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表