我正在运行一个命令,该命令在一个 shell 窗口中处理一些数据(假设它的 pid 为 200)。不幸的是,我忘了添加 & 以在后台运行它。
我需要在 pid 200 完成后运行一些分析脚本。我想我可以打开另一个 shell 窗口并执行
wait 200; ./myanalysis.sh
但它向我抱怨
"-bash: wait: pid 200 is not a child of this shell"
考虑到这一点,有没有办法我可以在该过程终止后自动执行我的分析脚本?
答案1
您无法“等待”非子进程,您必须定期手动检查。例如这个堆栈溢出答案。
答案2
您可以使用^z然后执行以下操作吗?
wait 200; ./myanalysis.sh&
fg %1
这将等待 pid200
完成,然后运行分析,然后将自身置于前台。