Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 用于监视新创建目录的Bash脚本_Linux_Bash_Shell_Rsync_Nagios - Fatal编程技术网

Linux 用于监视新创建目录的Bash脚本

Linux 用于监视新创建目录的Bash脚本,linux,bash,shell,rsync,nagios,Linux,Bash,Shell,Rsync,Nagios,任何人都可以提出建议或想法 我有一台服务器,它运行rsync,并将其他服务器备份到不同文件夹中,每天按日期创建新文件夹,例如(2017-03-20)。 我想创建一个bash脚本,通过检查创建的文件夹来检查这些备份是否已运行,然后如果所有备份都成功,脚本将通过在另一个文件夹/Z中写入文本文件来确认,该文本文件的格式为20-17-03-20。如果任何备份失败,脚本应该退出,而不是创建文件 关键是,我会做一个nagios插件脚本,每天检查这个文本文件并将结果发送给nagios 任何想法都将受到欢迎。首

任何人都可以提出建议或想法

我有一台服务器,它运行rsync,并将其他服务器备份到不同文件夹中,每天按日期创建新文件夹,例如(2017-03-20)。 我想创建一个bash脚本,通过检查创建的文件夹来检查这些备份是否已运行,然后如果所有备份都成功,脚本将通过在另一个文件夹/Z中写入文本文件来确认,该文本文件的格式为20-17-03-20。如果任何备份失败,脚本应该退出,而不是创建文件

关键是,我会做一个nagios插件脚本,每天检查这个文本文件并将结果发送给nagios


任何想法都将受到欢迎。

首先添加epel回购-

sudo rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
然后安装inotify工具-

sudo yum install inotify-tools
编写一个脚本,运行并无限循环监视特定目录(您希望备份脚本在其中生成目录)

#/垃圾箱/垃圾箱
虽然是真的
做
inotifywait-r-e修改、创建、删除/&&&/bin/sh
完成
-e
标志检查所述事件。您可以根据监控要求添加事件。
-r
标志将递归查找所述目录下的所有目录和子目录。

您可以监视主文件夹中的修改,例如使用inotify工具创建新的子文件夹-google it(inotify monitor folder)感谢您提供的信息,如果我有多个文件夹,例如/d、/e、/w,我是否能够让inotify monitor检查所有3个文件夹,并且仅在所有3个文件夹都发生更改时才写入确认文件。在1个或2个文件夹发生更改的情况下,脚本不得写入文件。在这种情况下,您需要通过脚本确保所有三个文件夹都发生更改(使用&&condition操作符),然后只运行您保留的备份脚本。你自己试试看。如果您无法理解,请在此处发表评论。谢谢您的帮助。我被告知要使用php而不是bash,不要使用inotify monitor。因此,我从php重新开始。如果您发现它在任何情况下都有帮助,请请求up vote:)
#!/bin/sh

while true
do 

inotifywait -r -e modify,create,delete /<directory> && /bin/sh <script_confirming _backup>

done