举个例子,如果我运行:
sleep 1 & sleep 2 & sleep 3
我将立即获取进程 ID,例如
[1] ...
[2] ...
然后 shell 冻结直到sleep 3
运行完成,然后同时打印这些:
[1]- Done sleep 1
[2]+ Done sleep 2
只是想知道导致这种行为的底层实现是什么。
答案1
shell的等待是由于最后一个sleep
没有后台导致的。
消息
[1]- Done sleep 1
[2]+ Done sleep 2
一般在方便的时候打印,大多数是在有提示时打印。尝试
sleep 3 &
并数到 10。不生成任何输出。但是,当您按 Enter 键时,您会收到新的提示,在此之前,您会收到消息Done
。
这与您所经历的情况相同。