如何使用 pidof 或 pgrep 查找 Linux 进程的 PID如何使用 pidof 或 pgrep 查找 Linux 进程的 PID如何使用 pidof 或 pgrep 查找 Linux 进程的 PID如何使用 pidof 或 pgrep 查找 Linux 进程的 PID
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何使用 pidof 或 pgrep 查找 Linux 进程的 PID

摘要:要查找 Linux 进程的进程 ID,请使用 pidof 命令,如下所示:“pidof examplename”。如果您只知道 PID 名称的一部分,则可以改用“pgrep examplenamefragment”。将“examplename”和“examplenamefragment”替换为您要搜索的术语。

使用 Linux 进程通常意味着了解其进程 ID 或 PID。它是分配给每个正在运行的软件的唯一编号。这里有两种方法可以找出它是什么。

什么是 Linux 进程 ID?

在内部,Linux 通过为它们分配一个唯一的 ID 号(称为进程 ID 或 PID)来跟踪其运行的进程。每个正在运行的应用程序、实用程序和守护进程都有一个 PID。

PID 是简单的整数值。新启动的进程将收到一个比上一个发出的 PID 高的 PID。因此,具有最高 PID 的进程是最新的(即最近启动的)进程。这一直持续到系统达到 PID 的最大值为止。

PID 的上限是 32768。一旦达到这个数字,Linux 就会回到开始并寻找一个已经空闲的 PID,因为之前拥有它的进程已经终止。

PID 为 1 的进程是启动进程启动 Linux 时启动的第一个进程。在基于 systemd 的系统上,它将是 systemd 。在其他系统上,它可能是 init,尽管某些 Linux 发行版使用 OpenRc 或 s6 等替代方案。

有时发现进程的 PID 很有用,通常是因为您想对该进程执行某些操作。当您知道进程的名称 时,这里有两种不同的查找进程 PID 的方法。

如何使用 pidof 命令获取 Linux PID

pidof 命令可以被认为是“PID”和“of”的组合。就好比问这个进程的PID是多少?如果我们使用不带参数的命令,它不会执行任何操作。它会自动将您返回到命令提示符。我们需要指定一个进程名称。

pidof bash

pidof 告诉我们 Bash shell 的 PID 是 8304。我们可以使用 ps 命令验证这一点。我们需要做的就是调用不带参数的 ps。它将报告当前会话中正在运行的进程。

ps

因为 ps 报告它可以找到的所有进程,其中包括它自己,它告诉我们有一个 bash 进程和一个 ps 进程正在运行。正如我们所料,bash 进程与 pidof 报告的 PID 相同。

如果打开了多个终端窗口,pidof 将报告所有窗口。

pidof bash

请注意,PID 是从最高到最低列出的,换句话说,从最近到最旧。

这没有表明您可能不是所有这些流程的所有者。 pidof 查找名称匹配的所有进程,无论它们的所有者是谁。让我们通过将输出输送到 grep 来更深入地了解一下。我们将 -e(选择所有进程)和 -f(完整列表)选项与 ps 一起使用。

ps -ef | grep bash

其中两个 bash 进程属于用户 dave,第三个属于用户 mary。

有时一个应用程序会生成很多进程,每个进程都会收到自己的 PID。这就是我们使用谷歌浏览器得到的。

pidof chrome

默认情况下,pidof 报告所有进程。如果需要,我们可以只请求这些进程中的最新进程。 -s(单发)选项就是这样做的。

pidof -s chrome

使用 kill 命令手动终止所有 chrome 进程会很乏味。如果我们将进程列表捕获到一个变量中,我们可以将该变量传递给 kill 命令。 kill 命令可以在其命令中接受多个 PID,因此它很乐意接受我们的输入并为我们终止所有进程。

pid=$(pidof chrome)
echo $pid
kill $pid
pidof chrome

第一个命令从 pidof 收集输出并将其分配给我们的变量,我们将其命名为 pid。我们不需要将它 echo 到屏幕上,我们这样做只是为了显示我们的变量包含的内容。

我们将变量传递给 kill 命令,然后再次使用 pidof 检查是否还有任何 Chrome 进程。他们都被杀了。

pidof 的一个怪癖是它不会返回 shell 脚本的 PID。它返回运行脚本的 bash shell 的 PID。要查看正在运行脚本的 shell,我们需要使用 -x(脚本)选项。

pidof -x sleep-loop.sh
ps -e | grep bash

pidof 返回 bash shell 的 PID,ps 向我们显示有两个 shell 正在运行。一个是运行pidof命令的shell,另一个是运行脚本的shell。

如何在 Linux 中使用 pgrep 命令查找 PID

pgrep 命令在获取 Linux 进程 ID 方面有点像 pidof。但是,它不仅会找到与搜索线索完全匹配的进程,还会返回名称包含搜索文本的任何进程的 PID。

这是在运行 Firefox 的计算机上的示例。

pgrep firefox
pgrep fire
pgrep fox
pgrep refo

所有这些命令都会找到 Firefox 进程并返回 PID。但是如果你输入了命令:

pgrep refo

就其本身而言,您如何知道 pgrep 是否找到了 Firefox 而不是,比如说,一个名为 preformd 的 dameon?

如果添加 -l(列表名称)选项,pgrep 将在 PID 旁边列出进程名称。

pgrep refo -l

如果一个匹配过程有多个实例,它们都会被列出。

pgrep bash

请注意,它们按升序排列,这与 pidof 的输出顺序相反。它们从最旧的进程到最新的进程列出。正如我们在 pidof 中看到的那样,并非所有列出的进程都一定属于您。

-u(用户 ID)选项可让您搜索与搜索文本匹配且归指定用户所有的进程。

pgrep bash -u dave

这次我们在结果中看到了三个 bash 进程。另一个正在被 mary 使用。

pgrep bash -u mary

我们可以将用户名串在一起作为逗号分隔的列表。

pgrep bash -u dave,mary -l

我们可以要求查看特定用户的所有进程。

pgrep -u dave -l

要查看完整的命令行,请使用 -a(完整列表)选项。

pgrep -u dave -a

关于 PID 所有权的一句话

并非所有系统进程都由 root 用户拥有。当然有很多,但不是全部。例如,此命令有效:

pgrep avahi-daemon

但是这个命令失败了。

pgrep -u root avahi-daemon

它失败了,因为 root 不拥有该进程。实际所有者是名为“avahi”的系统用户。使用正确的用户名,该命令有效。

pgrep -u avahi avahi-daemon

这是一个需要注意的小陷阱。

Linux Commands
Files tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc
Processes alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap
Networking netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

RELATED: Best Linux Laptops for Developers and Enthusiasts

©2015-2025 艾丽卡 support@alaica.com