微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Bash 脚本可在添加新文件时监视多个路径并结束电子邮件通知

如何解决Bash 脚本可在添加新文件时监视多个路径并结束电子邮件通知

我编写了一个脚本来监视 2 个目录并在此处添加文件时结束电子邮件通知,但它似乎只监视第一个目录而不是第二个目录(当我没有收到通知时在第二个目录中添加一些东西),谁能帮我解决这个问题? 脚本:

#!/bin/bash

monitor_dir=/path1/UnSent
monitor_dir1=/path2/Failed

email=email1.com
email2=email2.com


files=$(find "$monitor_dir" -maxdepth 1 | sort)
IFS=$'\n'

while true
do
  sleep 5s

  newfiles=$(find "$monitor_dir" -maxdepth 1 | sort)
  added=$(comm -13 <(echo "$files") <(echo "$newfiles"))

  [ "$added" != "" ] &&
    find $added -maxdepth 1 -printf '%Tc\t%s\t%p\n' |
    mail -s "your file sent to UnSent" "$email" 

  files="$newfiles" 
done

files1=$(find "$monitor_dir1" -maxdepth 1 | sort)
IFS=$'\n'

while true
do
  sleep 5s

  newfiles1=$(find "$monitor_dir1" -maxdepth 1 | sort)
  added=$(comm -13 <(echo "$files1") <(echo "$newfiles1"))

  [ "$added" != "" ] &&
    find $added -maxdepth 1 -printf '%Tc\t%s\t%p\n' |
    mail -s "your file sent to Failed" "$email2" 

  files1="$newfiles1" 
done

解决方法

在第一个循环 & 之后添加一个与符号 done & 可能会有所帮助。这将在后台运行第一个循环并继续第二个循环。没有 &,第二个循环将永远不会到达,因为第一个循环无限期地运行。

更新后的代码:

#!/bin/bash

monitor_dir=/path1/UnSent
monitor_dir1=/path2/failed

email=email1.com
email2=email2.com


files=$(find "$monitor_dir" -maxdepth 1 | sort)
IFS=$'\n'

while true
do
  sleep 5s

  newfiles=$(find "$monitor_dir" -maxdepth 1 | sort)
  added=$(comm -13 <(echo "$files") <(echo "$newfiles"))

  [ "$added" != "" ] &&
    find $added -maxdepth 1 -printf '%Tc\t%s\t%p\n' |
    mail -s "your file sent to UnSent" "$email" 

  files="$newfiles" 
done &

files1=$(find "$monitor_dir1" -maxdepth 1 | sort)
IFS=$'\n'

while true
do
  sleep 5s

  newfiles1=$(find "$monitor_dir1" -maxdepth 1 | sort)
  added=$(comm -13 <(echo "$files1") <(echo "$newfiles1"))

  [ "$added" != "" ] &&
    find $added -maxdepth 1 -printf '%Tc\t%s\t%p\n' |
    mail -s "your file sent to failed" "$email2" 

  files1="$newfiles1" 
done

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。