Bash:等待当前命令完成,但不启动任何其他命令

Bash:等待当前命令完成,但不启动任何其他命令

我将几个长时间运行的命令列表复制到 bash shell 中并按下 Enter。现在命令正在按顺序执行。

例如:

train_agi.sh
find_meaning_of_life.sh
destroy_universe.sh

现在我希望当前命令完成,但后续命令被中止。

实现此目的的最佳方法是什么?我正在考虑终止 shell,但我不确定。

答案1

你应该能够暂停所有命令,使用 Ctrl+Z 执行排队命令的次数,然后执行kill您不想运行的命令。然后,您可以使用 将其作业放回到前台fg(或者bg,如果您愿意,可以使用 将其放在后台)来恢复第一个命令。

为了显示:

$ /bin/sleep 300 ; /bin/sleep 200 ; /bin/sleep 100
^Z
[1]+  Stopped                 /bin/sleep 300
^Z
[2]+  Stopped                 /bin/sleep 200
^Z
[3]+  Stopped                 /bin/sleep 100
steeldriver@DESKTOP-SPDO14V:~$
steeldriver@DESKTOP-SPDO14V:~$ jobs
[1]   Stopped                 /bin/sleep 300
[2]-  Stopped                 /bin/sleep 200
[3]+  Stopped                 /bin/sleep 100
steeldriver@DESKTOP-SPDO14V:~$
steeldriver@DESKTOP-SPDO14V:~$ kill %2 %3
[2]-  Terminated              /bin/sleep 200
[3]+  Terminated              /bin/sleep 100
steeldriver@DESKTOP-SPDO14V:~$
steeldriver@DESKTOP-SPDO14V:~$ fg %1
/bin/sleep 300
-

相关内容