gpt4 book ai didi

linux - 防止脚本以相同的参数运行两次

转载 作者:太空狗 更新时间:2023-10-29 11:21:01 26 4
gpt4 key购买 nike

我们正在研究构建一个日志检查脚本,该脚本将在找到给定参数时跟踪给定的日志文件和电子邮件。我无法准确确定此脚本的另一个版本是否正在使用至少一个针对同一文件的相同参数运行。脚本可以采用以下内容:

logcheck -i <filename(s)> <searchCriterion> <optionalEmailAddresses>

我曾尝试将 ps aux 与一系列 grep、sed 和 cut 一起使用,但它总是以比脚本本身更多的代码而告终,而且很少能非常有效地工作。有没有一种有效的方法来判断此脚本的另一个版本是否正在使用相同的文件名和搜索条件运行?输入的几个例子:

EX1 .\logcheck -i file1,file2,file3 "foo string 0123" email@address.com
EX2 .\logcheck -s file1 Hello,World,Foo
EX3 .\logcheck -i file3 foo email@address1.com,email@address2.com

在这种情况下,3 不应运行,因为 1 已经使用参数 file3 和 foo 运行。

最佳答案

您的问题有很多解决方案,我建议创建一个锁定文件,格式如下:

arg1Ex1 PID#(Ex1)
arg2Ex1 PID#(Ex1)
arg3Ex1 PID#(Ex1)
arg4Ex1 PID#(Ex1)
arg1Ex2 PID#(Ex2)
arg2Ex2 PID#(Ex2)
arg3Ex2 PID#(Ex2)
arg4Ex2 PID#(Ex2)

当你的脚本开始时:

  • 它将在文件中搜索它收到的所有参数(awk 命令或 grep)
  • 如果参数之一出现在列表中,获取进程 PID(例如 awk 'print $2')以检查它是否仍在运行(ps )(仔细检查并发性,如果进程异常结束,之前垃圾可能会留在文件中)
  • 如果PID还在,脚本将不会运行
  • 否则使用当前进程 PID 将参数附加到锁定文件并运行脚本。
  • 在执行结束时,您删除包含脚本已使用的参数的行,或删除所有包含其 PID 的行。

关于linux - 防止脚本以相同的参数运行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47275318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com