我可以轻松地在 3 个不同的终端上启动 3 个进程,然后按 杀死每个进程Ctrl+C。现在,有什么方法可以同时启动所有 3 个进程,然后同样轻松地完成它们吗?想法:
如果我可以启动 3 个进程,让它们在同一个终端上运行,并Ctrl+C杀死所有 3 个进程,那就行了。
如果我可以创建两个脚本,
init.sh
并且kill.sh
这将启动/终止 3 个进程,那也可以。
这两者都有效,因为它们很容易。必须在后台生成一个进程,然后找到它的 pid,然后复制它,然后用另一个命令杀死它,这并不容易。
答案1
使用 bash 的作业控制:
$ sleep 10m & sleep 11m & sleep 12m &
[1] 1821
[2] 1822
[3] 1823
$ jobs
[1] Running sleep 10m &
[2]- Running sleep 11m &
[3]+ Running sleep 12m &
$ kill %1 %2 %3
$ jobs
[1] Terminated: 15 sleep 10m
[2]- Terminated: 15 sleep 11m
[3]+ Terminated: 15 sleep 12m
在 bash 中,运行command &
会将其发送到后台。这样,您可以在同一个 shell 中启动多个命令,并在后台运行。内置kill
函数可用于终止这些后台作业。第一个(最旧的)活动工作是%1
,下一个是%2
等等。另请参阅:杀死所有后台作业