如何知道a.sh是否正在从b.sh执行?

时间:2017-09-22 21:48:07

标签: shell ksh

我正在运行脚本a.sh并行并行执行b.sh.现在b.sh不应该开始执行它的业务逻辑,除非a.sh完成。为了在b.sh中实现这一点,我有一个while循环,它在ps -ef命令中使用名称a.sh进行搜索,但是a.sh有许多睡眠命令,所以当睡眠正在执行时我没有在ps中看到任何结果 - ef命令为a.sh,而过程就像sleep 60

在这种情况下,我能想到的是要么在a.sh中设置一个标志,b.sh可以以某种方式访问​​它。但是我不知道如何在b.sh中访问这样的变量,因为a.sh没有调用b.sh。

或者我可以创建一个子进程并为其指定一个自定义名称,并在a.sh结束时终止它。

通过这种方式,在b.sh中,我可以搜索具有该特定名称的进程,直到它在那里,我不会在b.sh中开始执行业务逻辑。但我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

为什么不让2人沟通?例如,你可以做什么:

  • a.sh将一些临时文件写入其进度状态
  • b.sh循环读取文件,等待查看该文件中正确的事情进展。

请注意,在bash中可能有一些更简单/更安全的方法(使用信号)但我认为应该做的工作。关于问题的并发方面要小心。

(不能评论不够重复)