![我可以修改或者预先终止正在运行的以 ; 分隔的复合 bash 命令的一部分吗?](https://linux22.com/image/1542025/%E6%88%91%E5%8F%AF%E4%BB%A5%E4%BF%AE%E6%94%B9%E6%88%96%E8%80%85%E9%A2%84%E5%85%88%E7%BB%88%E6%AD%A2%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%E7%9A%84%E4%BB%A5%20%3B%20%E5%88%86%E9%9A%94%E7%9A%84%E5%A4%8D%E5%90%88%20bash%20%E5%91%BD%E4%BB%A4%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%E5%90%97%EF%BC%9F.png)
我正在运行多个以分号分隔的 bash 命令:
% long-running-command-I-want ; another-command-I-dont
long-running-command-I-want
仍在运行;当然还没有。pid
我another-command-I-dont
想先发制人地杀死/取消/阻止执行,而不another-command-I-dont
杀死long-running-command-I-want
我等待已久的。我可以这样做吗?如果可以,怎么做?
答案1
bash
如果您运行另一个 shell,则可以找出正在运行要继续的程序的 PID 。如果是bashPID
,则使用以下命令发送中断信号:
kill -2 bashPID
这将停止其余命令行的执行。
您也可以在原始 shell 中输入Ctrl-z以暂时在后台暂停正在运行的程序。这将继续执行其余的命令行,这些命令行将被中断信号刷新。然后,您可以使用fg
或恢复正在运行的程序bg
,具体取决于您希望它在前台还是后台继续运行。