【发布时间】:2014-06-11 18:27:13
【问题描述】:
我需要创建一个 shell 脚本,根据从目录 /dir1/dir2/req_flag_file_directory 中的 shell 脚本接收到的请求标志以及目录中存在的源文件,比如 /dir1/dir2/flag_file_directory,将一些指标/标志文件放在一个目录中,比如 @ 987654325@。为此,我需要在 无限循环 中使用 while 条件运行脚本,因为我不知道源文件何时可用。
所以,我的实施计划有点像这样 - 假设 JOB1 计划在早上的某个时间运行,它将首先放置(触摸)请求标志(例如 touch /dir1/ dir2/req_flag_file_directory/req1.req),表示这个job正在运行,所以寻找源文件目录下patternfile_pattern_YYYYMMDD.CSV的Source files(不同job的文件pattern不同),如果存在,则数数。如果文件计数正确,则首先删除该作业的请求标志,然后删除touch/dir1/dir2/flag_file_directory 中的指示器/标志文件。然后,此指示器/标志文件将用作源文件都存在的指示器,并且可以继续将这些文件加载到我们的系统中。
我将在一个结构如下所示的文件中包含与作业及其标志文件相关的所有详细信息。根据请求标志,脚本应该知道在放置指标文件之前它应该寻找哪些其他标准:
request_flags|source_name|job_name|file_pattern|file_count|indicator_flag_file
req1.req|Sourcename1|jobname1|file_pattern_1|3|ind1.ind
req2.req|Sourcename2|jobname2|file_pattern_2|6|ind2.ind
req3.req|Sourcename3|jobname3|file_pattern_3|1|ind3.ind
req**n**.req|Sourcename**n**|jobname**n**|file_pattern_**n**|2|ind**n**.ind
如果您还有其他建议或解决方案,请告诉我如何实现这一点
【问题讨论】:
-
您可能想调查inotify-tools 而不是重新发明这个轮子。
-
@Glenn,感谢您的建议,我浏览了 inotify 工具文档,它的文档并没有太大帮助。我没有看到如何在我的要求中使用它们。您能否建议或详细说明如何在我的情况下使用它们?
-
linux.die.net/man/1/inotifywait 可以监视目录中的事件,然后使用事件数据运行程序。 ...无需轮询(又名无限循环)
-
请求文件的内容是什么?
标签: shell if-statement for-loop while-loop conditional-statements