免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1012 | 回复: 3
打印 上一主题 下一主题

[文件目录] 关于inotifywait的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-09-20 14:11 |只看该作者 |倒序浏览
我有个shell脚本:用inotifywait监控一个目录里里文件,当该目录里有新文件 SCP进来后即执行另一个脚本。现在有一个问题: 如何等待SCP文件全部完成后再执行让inotifywait的内容呢?因为远程SCP的文件数量比较多,大约有100多个。谢谢

论坛徽章:
0
2 [报告]
发表于 2016-09-20 17:44 |只看该作者
本帖最后由 lll1985911 于 2016-09-20 17:51 编辑

我的理解是这样的。
分为两种情况:
第一,执行scp命令的主机(简称A主机)和执行inotifywait命令的主机(简称B主机)在两个不同的服务器上。那么建议在A上修改执行scp命令的脚本,在执行scp命令之前首先通过ssh登录到B主机上,然后在特定的目录下通过touch或者mkdir命令创建一个文件或者目录(可以命名为lock),因为touch和mkdir能够保证在并发执行下始终只有一个会执行成功,其它均失败。等A主机上scp命令执行完毕后在通过ssh登录到B主机上删除lock。最后在B主机上执行inotirywait命令的脚本里判断这个lock目标是否存在,如果lock存在则说明scp命令还在执行中,如果lock不存在则说明scp命令已经执行完毕了。
第二,执行scp命令的主机和执行inotifywait命令的主机在同一台主机上(简称A主机)。那么此种情况比较简单,只要直接在脚本中按顺序写就可以了,脚本默认就是顺序(串行)执行的。但是如果执行scp命令和执行inotifywait命令的主机虽然是一台主机,但是这两个命令却是在两个不同的脚本中执行的话,可以参考第一种情况。
补充:第一种情况里,如果不想写一个死循环,不断探测lock目标是否存在。则可以考虑wait命令,不过这种情况下要注意到A、B主机上scp两端的pid是不一样的,不要把传给wait命令的pid弄错了。这种用法可能比较麻烦,留待探讨。

个人浅见,不足之处还请海涵



论坛徽章:
0
3 [报告]
发表于 2016-09-21 10:26 |只看该作者
lll1985911 发表于 2016-09-20 17:44
我的理解是这样的。
分为两种情况:
第一,执行scp命令的主机(简称A主机)和执行inotifywait命令的主机 ...

感谢您的思路,很有启发,我早补充一下:SCP与inotifywait是在两台主机执行。我使用的是expect来执行SCP。


例如:


expect -c "
set timeout 9000;
spawn /usr/bin/scp -r `ls -d $sourceDir |sort -n| tr "\n" " "` $dstDir
expect {
   \"*yes/no*\" {send \"yes\r\"; exp_continue}


需要把四个文件夹全部SCP传完后才能执行inotifywait命令.我想在inotifywait脚本里添加sleep 这样不知道是否能实现?


非常感谢!


论坛徽章:
39
双子座
日期:2014-08-06 17:37:19极客徽章
日期:2016-12-07 14:03:402017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之新疆
日期:2017-03-24 16:36:1915-16赛季CBA联赛之江苏
日期:2017-04-26 17:19:08黑曼巴
日期:2018-03-07 18:56:5615-16赛季CBA联赛之八一
日期:2018-03-09 10:44:1015-16赛季CBA联赛之江苏
日期:2018-03-12 15:12:1915-16赛季CBA联赛之青岛
日期:2018-03-16 09:13:0515-16赛季CBA联赛之山东
日期:2018-04-27 18:23:0515-16赛季CBA联赛之新疆
日期:2018-05-04 11:29:30
4 [报告]
发表于 2016-09-21 10:38 |只看该作者
The scp utility exits 0 on success
可以尝试使用scp的return code进行判定是否scp完毕
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP