【发布时间】:2021-01-04 20:39:11
【问题描述】:
我有一个主 bash 脚本,它应该启动另一个具有不同输入的 bash 脚本作为后台进程,然后等待它。为此,我使用find dir_path -exec bash -c '. another_batchscript.sh {} $0' ${second_input} \;(类似于here),然后在我的主脚本中有一个wait 命令。问题是这个脚本几乎马上就完成了。
我想了想,当我从命令行执行sleep 10 & 时,我可以通过执行jobs 命令找到工作。但是当我执行bash -c 'sleep 10 &' 时,jobs 将找不到它。这可能就是为什么 wait 命令在我的主 bash 脚本中没有阻塞的原因。
为什么会发生这种情况,我必须如何更改主批处理脚本中的命令才能解决我的问题?
【问题讨论】:
-
您的问题似乎有点停留在后台任务和等待的细节中。也许退后一步,说出你真正想要做的事情。
-
我不确定您的确切意思。我对启动后台进程的一般方法感兴趣,其中每个进程执行一个具有不同输入的 bash 脚本,然后我想等待它们完成。目前,我正在研究一个特殊情况,它会很有用,但我不确定谈论这些脚本的确切内容是否会有所帮助。问题是我的主脚本不会等待它使用上述 find -exec 命令启动的进程,这应该独立于 bash 脚本的内容,不是吗?
-
我的主脚本如上所述:首先是 find -exec 命令,然后等待。但它几乎立即完成,因为我怀疑等待命令在这里不起作用。请参阅上面我与作业命令争论的地方,即以这种特殊方式使用此 find -exec 命令启动的进程似乎不被识别为子进程
标签: bash find exec background-process