答案1
所示图形是jobs
命令的输出(转录用于打印,因为该字体不能来自实际终端)。
假设您有一个名为forever
(需要无限循环,希望有嵌入sleep 10
以避免 100% CPU 使用率)的脚本。
然后想象一下您在 shell 中启动了六个全部运行的作业forever
,并从一个不同的外壳窗口。您一次只能有一个前台命令,因此您需要先挂起作业 1,然后才能启动作业 2,依此类推。
所有作业状态都与您发送(使用kill
)到进程号的不同 SIG 代码相关。您需要发现进程号,因为作业号仅与第一个 shell 相关,并且您需要从第二个 shell 发送信号。经常使用pstree $PPID
可能会有所帮助。
作业 3 处于后台,而其他 5 个作业已被外部禁止,因此没有前台任务,您会再次收到 shell 提示符。您可以在其中发出jobs
命令并获取输出。
显示&
作业 3 在后台启动。它们-
.
+
是 shell 输出的作业状态信息。
编辑:我无法在 Bash 中完成这项工作。我认为这可能与 Bash 在您请求之前积极收集进程终止状态的方式有关。稍后我会尝试另一个 shell。