【发布时间】:2013-09-26 18:56:59
【问题描述】:
我有以下问题:我有一个执行内部后台进程的脚本:
====myinternalscript====
...
myinternalscript-program &
...
从等待 myinternalscript-program 终止的脚本调用:
====mainscript====
...
myinternalscript
while [ "$(ps -u ${CURRENT_USER} | grep myinternalscript-program)" ];
...
当我想在第一次通话结束之前再次调用 mainscript 时,问题就来了。这使得如果与第一个调用相关的 myinternalscript-program 在第二个 myinternalscript-program 完成之前结束,则第一次调用 mainscript的暂停条件> 仍然正确(因为 myinternalscript-program 被第二个 mainscript 调用调用)并且第一个 mainscript 调用直到 mainscript 调用才前进由第二个 mainscript 调用的 strong>myinternalscript-program 也完成了。
我的解决方案是:
====mainscript====
...
myinternalscript
internalpid = #some way to get the myinternalscript-program PID
while [ "$(ps -u ${CURRENT_USER} | grep myinternalscript-program| grep $internalpid)" ];
...
其中“internalpid”具有 myinternalscript-program 在执行 myinternalscript 期间调用的 PID。
正如其中一个答案所建议的那样,$!在 myinternalscript-program 可以为我提供我在 myinternalscript 上需要的 PID 信息之后,然后我可以想象某种方式将这些信息提供给 mainscript,但我没有编辑 myinternalscript 的权限。在这种情况下,挑战是:
如何在 mainscript 获取 myinternalscript-program PID 不编辑 myinternalscript?
显然我也可以使用其他方式暂停 mainscript 执行以解决问题,但我很困惑我最初想做的事情是否可以实现。
有没有cmets?
【问题讨论】: