Tim*_*Tim 15 gnome-terminal process job-control
当我尝试关闭 Gnome 终端中的选项卡时,它说:
关闭这个终端?该终端中仍有一个进程在运行。关闭终端将杀死它。
我怎样才能找出什么仍在运行?请注意, 的输出中没有任何内容jobs。谢谢。
如果您在终端(例如 gedit)中启动了某个进程,则这两个进程的进程 ID (PID)(bash 的)和父进程 ID (PPID)(gedit 的)将相同。这可以在输出中看到
ps -ef
Run Code Online (Sandbox Code Playgroud)
命令。为了使其更具可读性,让我们首先将输出“管道”到grep查找当前正在运行的所有“bash”进程的 PID,然后再次将其“管道”到awk. 仅选择awkPID 和进程名称字段(字段 2 和 8)并将其输出到屏幕。
ps -ef | grep bash | awk '{print $2 ": " $8}'
输出中的数字是PID。您将使用它来查找具有该 PID 的终端中启动的进程。请注意,如果打开了多个终端,则可能会有多行输出。现在要查找该终端会话的“子”进程(如果有),我们可以使用以下命令:
ps -ef | awk '{if ($3 == EnterPID) print $2 ": " $8;}'
您必须输入 PID 编号来代替最后一个命令中的 EnterPID。如果“bash”有多个 PID,则必须全部尝试。
最后一个命令只是查看输出ps -ef并搜索 PID(您从上一个命令中找到的)和 PPID 对于任何进程是否相同。
更多信息:
您可以查看将您的 shell 的 PID 列为父进程的进程的峰值。您可能知道也可能不知道,我们可以指定ps格式
SHELLPID=$$ ; ps -e -o cmd,pid,ppid | awk -v shell=$SHELLPID '$NF~shell'
Run Code Online (Sandbox Code Playgroud)
$$在这里,我们从特殊变量into 中获取 shell 的 PID SHELLPID,然后 awk 在 pipeline 的子 shell 中可以使用它。本质上,我们只是以 NAME,PID,Parent PID 形式列出进程,并仅过滤掉最后一列中具有适当 PID 的进程。
| 归档时间: |
|
| 查看次数: |
30972 次 |
| 最近记录: |