如何将一个命令排队在另一个命令完成后运行?

如何将一个命令排队在另一个命令完成后运行?

有时我启动一个需要很长时间才能完成的程序(emerge),然后意识到我应该去睡觉而不是等待它。如果我一开始就知道这一点我就会跑

program; halt

但是,现在我已经启动了该程序,如何“安排”计算机在该过程完成时关闭?Ctrl+z那么就可以fg; halt了吗?

答案1

是的,那会起作用。

如果不确定,您可以使用以下命令进行测试

  • sleep 15

  • Ctrl+z

  • fg; echo "it works"

答案2

halt另一种方法是在第一个命令运行时在终端中键入;只要第一个命令在某个时刻不读取输入,它就会位于终端的缓冲区中,并且 shell 将在第一个程序结束时读取它

答案3

使用wait命令

$ sleep 10 &
[1] 29703
$ wait 29703 && echo hello
[1]+  Done                    sleep 10
hello

相关内容