大家都知道PID,PID到底是什么?你为什么要PID?你打算用PID做什么?你脑子里有同样的问题吗?如果是这样,那么您来对地方了。我们查询PID主要是为了杀死一个没有响应的程序,类似于Windows的任务管理器。LinuxGUI也提供相同的功能,但CLI是执行kill操作的有效方式。什么是进程ID?PID代表进程标识号,用于大多数操作系统内核,如Linux、Unix、macOS和Windows。它是在操作系统中创建进程时自动分配给每个进程的唯一标识号。进程是程序的运行实例。推荐阅读:如何检查ApacheWeb服务器在Linux中运行了多长时间除init进程外,所有进程ID每次都会更改,因为init始终是系统上的第一个进程,并且是所有其他进程的父进程。它的PID是1。PID的默认最大值是32768。这可以通过在您的系统上运行cat/proc/sys/kernel/pid_max来验证。在32位系统上,32768是最大值,但在64位系统上我们可以将其设置为最大222(约400万)的任意值。你可能会问,为什么我们需要那么多PID?因为我们不能立即重用PID,所以才会这样。也是为了防止可能出现的错误。可以使用pidof、pgrep、ps和pstree命令找到系统上运行的进程的PID。方法1:使用pidof命令pidof用于查找正在运行的程序的进程ID。它在标准输出上打印这些ID。为了演示,我们将在Debian9(stretch)系统上找出Apache2的进程ID。#pidofapache23754259423652364236323622361从上面的输出中,您可能无法识别进程ID,因为它按进程名称显示了所有PID(父进程和子进程)。因此,我们需要找出父PID(PPID),这就是我们要找的。它可能是第一个数字。在本例中,它是3754,按降序排列。方法二:使用pgrep命令pgrep遍历当前正在运行的进程,将符合选择条件的进程ID列出到标准输出。#pgrepapache22361236223632364236525943754这也和上面的输出类似,不过是把结果从小到大排序,很明显父PID排在最后。在此示例中,它是3754。注意:如果您有多个进程的进程ID,则使用pidof和pgrep识别父进程ID可能不太顺利。方法三:使用pstree命令pstree将正在运行的进程显示为一棵树。树的根是某个pid,如果省略pid参数,则为init。如果在pstree命令中指定了用户名,则显示相应用户拥有的所有进程。pstree会将相同的分支放在方括号中,并在它们前面加上重复计数,以便在视觉上将它们合并在一起。#pstree-p|grep"apache2"|-apache2(3754)-|-apache2(2361)||-apache2(2362)||-apache2(2363)||-apache2(2364)||-apache2(2365)|`-apache2(2594)要单独获取父进程,请使用以下格式。#pstree-p|grep“apache2”|head-1|-apache2(3754)-|-apache2(2361)pstree命令很简单,因为它把父进程和子进程分开隔离,但是这个命令做起来并不容易。方法四:使用ps命令ps显示活动进程的选择信息。它显示进程ID(pid=PID)、与进程关联的终端(tname=TTY)、[DD-]hh:mm:ss格式的累积CPU时间(time=TIME)和执行名称(ucmd=命令)。默认情况下输出未排序。#ps辅助|grep"apache2"www-data23610.00.43026529732?S06:250:00/usr/sbin/apache2-k开始www-data23620.00.43026529732?S06:250:00/usr/sbin/apache2-kstartwww-data23630.00.43026529732?S06:250:00/usr/sbin/apache2-kstartwww-data23640.00.43026529732?S06:250:00/usr/sbin/apache2-kstartwww-data23650.00.43026528400?S06:250:00/usr/sbin/apache2-kstartwww-data25940.00.43026528400?S06:550:00/usr/sbin/apache2-kstartroot37540.01.430258029324?ssDec110:23/usr/sbin/apache2-kstartroot56480.00.012784940pts/0S+21:320:00grepapache2从上面的输出,我们可以根据进程轻松识别父进程ID(PPID)的开始日期。本例中apache2是12月11日启动的,它是父进程,其他都是子进程。apache2的PID是3754。