为什么在手动终止进程后使用“jobs”命令时会显示该进程?

为什么在手动终止进程后使用“jobs”命令时会显示该进程?

为什么即使手动终止后,假释(只是一个媒体播放器)仍然列在“JOBS”命令输出中,并且为什么没有列在“PS”命令输出中?

  1. 这是否意味着该进程仍在后台运行(ps:当我发出kill命令时,媒体播放器[parole]已关闭))?
  2. 如果正在运行,为什么它没有在“PS”命令输出中列出?如果没有运行,“JOBS”命令的输出的含义是什么?

输入的命令列表

答案1

职位将在之后最后一次出现任何命令一旦终止。

见下文

 > sleep 30 &
[1] 134042
 > ps
    PID TTY          TIME CMD
 134009 pts/4    00:00:00 bash
 134042 pts/4    00:00:00 sleep
 134043 pts/4    00:00:00 ps
 > kill 134042
 > date
Mon Aug  3 22:11:58 CEST 2020
[1]+  Terminated              sleep 30
 > jobs
 > 

根据man bash,作业控制

每当作业状态发生变化时,shell 都会立即学习。通常,bash 会等到要打印提示时才报告作业状态的更改,以免中断任何其他输出。

因此您甚至可以使用空命令(即按return)来查看该done行。

相关内容