OnWorks Linux 和 Windows 在线工作站

商标

工作站免费在线托管

<上一页 | 内容 | 下一页>

等待

我们将演示 等待 先指挥。 为此,我们需要两个脚本,一个父脚本:


#!/斌/庆典


# async-parent: 异步执行演示 (parent) echo "Parent:starting..."

echo "Parent: 启动子脚本..." async-child &

pid=$!

echo "父:子 (PID= $pid) 已启动。"


echo "家长:继续..." sleep 2


回声“父母:暂停等待孩子完成...”等待 $pid


echo "Parent: child is done. Continuing..." echo "Parent: parent is done. exiting."

#!/斌/庆典


# async-parent: 异步执行演示 (parent) echo "Parent:starting..."

echo "Parent: 启动子脚本..." async-child &

pid=$!

echo "父:子 (PID= $pid) 已启动。"


echo "家长:继续..." sleep 2


回声“父母:暂停等待孩子完成...”等待 $pid


echo "Parent: child is done. Continuing..." echo "Parent: parent is done. exiting."


和一个子脚本:



#!/斌/庆典

# async-child: 异步执行演示(child) echo "Child: child is running..."

睡5

echo "孩子:孩子完成了。退出。"

#!/斌/庆典

# async-child: 异步执行演示(child) echo "Child: child is running..."

睡5

echo "孩子:孩子完成了。退出。"


在这个例子中,我们看到子脚本非常简单。 真正的动作是由父级执行的。 在父脚本中,子脚本被启动并置于后台。 子脚本的进程ID通过分配 PID 变量的值 $! shell 参数,它将始终包含最后一个进入后台的作业的进程 ID。

父脚本继续执行,然后执行 等待 带有子进程PID的命令。 这会导致父脚本暂停,直到子脚本退出,此时父脚本结束。

执行时,父脚本和子脚本产生以下输出:



[我@linuxbox ~]$ 异步父

家长:开始...

[我@linuxbox ~]$ 异步父

家长:开始...

异步执行


父:启动子脚本... 父:子 (PID= 6741) 已启动。 家长:继续...

孩子:孩子在跑...

家长:暂停等待孩子完成... 孩子:孩子完成了。 退出。

家长:孩子完成了。 继续... 父级:父级完成。 退出。

父:启动子脚本... 父:子 (PID= 6741) 已启动。 家长:继续...

孩子:孩子在跑...

家长:暂停等待孩子完成... 孩子:孩子完成了。 退出。

家长:孩子完成了。 继续... 父级:父级完成。 退出。


OnWorks 的顶级操作系统云计算: