我打开了一个终端会话并启动了一些进程&
。当我尝试关闭终端窗口时,它警告我仍有作业在后台运行。
我可以看到正在运行的进程ps
,但我如何知道哪些进程是通过此会话启动的?
答案1
jobs -l
列出活动作业的进程 ID
答案2
如果要查找从当前bash
会话启动的所有后台进程,可以使用jobs
的内置函数bash
。
从help jobs
:
jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args] Display status of jobs. Lists the active jobs. JOBSPEC restricts output to that job. Without options, the status of all active jobs is displayed.
另一方面,如果您想查找从此bash
会话启动的所有进程,您可以使用该$$
变量bash
,该变量将为您提供当前实例的 PID bash
。然后您可以解析命令的输出ps -ef
以查找父进程 ID (PPID) 为的所有进程$$
:
ps -ef | grep -P "^[^ ]+\s+[^ ]+\s+$$\s"
答案3
运行ps -auxf
以查看后台进程是哪些 shell 的子进程。