![如何将一个命令排队在另一个命令完成后运行?](https://linux22.com/image/41747/%E5%A6%82%E4%BD%95%E5%B0%86%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E6%8E%92%E9%98%9F%E5%9C%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E5%AE%8C%E6%88%90%E5%90%8E%E8%BF%90%E8%A1%8C%EF%BC%9F.png)
有时我启动一个需要很长时间才能完成的程序(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