我正在自己的 shell 上工作,我对工作管理感到困惑。
我能够列出用户拥有的进程并暂停给定其 pid 的任何进程。但是,如标题所述,我需要将暂停的作业恢复到运行状态以及后台或前台。
我的命令将是这样的:
mybg <PID>
myfg <PID>
现在,我只想使用该 pid 获取进程名称,并将 bg/fg 与进程名称一起使用。这没有多大帮助。
答案1
如何暂停工作?我知道的唯一方法是发送 SIGSTOP,您可以在 bash 中使用 Ctrl-Z 执行前台作业。
由于此后它不再运行,因此它不再是前台作业,因此您的键盘与它没有任何连接。 shell 是前台作业,您必须告诉 shell fg 或 bg 它的子进程。
但是,shell 会向作业发送 SIGCONT 来取消停止它。该进程并不直接获取这些信号。内核更改 Pid 的运行状态,如果作业处于“已停止”状态,调度程序将忽略该作业。
您也可以直接kill -STOP %1
or (job id 或 pid) 和bash 中的 ,kill -STOP 14193
相同。-CONT