Linux wait命令测试脚本后台进程输出顺序异常问题咨询
原因说明
- 后缀
&的作用是将命令丢入后台异步执行,主进程不会等待该命令执行完成,会立刻执行后续代码。 - 你的脚本里两个
echo命令都加了&,会作为两个独立的后台子进程运行,Linux内核的进程调度器会随机给两个子进程分配CPU时间片,没有固定的执行先后顺序,哪个子进程先拿到时间片就会先完成输出,所以会出现testing wait command 2排在前面的情况,多次运行脚本你还会看到输出顺序随机变化。 - 当你移除第一个
echo后的&时,这个命令会在主进程同步执行,主进程必须等它输出完成才会执行第二个echo,自然输出顺序就符合预期。
注意:你调用的
wait $process_id仅能保证主进程等第一个后台echo进程结束后,才会输出后续的command 1 completed、command 2 completed,不会干预两个后台echo进程本身的调度顺序,所以无法决定前两行测试文本的输出顺序。
内容的提问来源于stack exchange,提问作者chun xu
相关产品推荐
相关产品推荐

