Linux / UNIX 查找或确定进程 PID 是否正在运行
PID 是 Linux 或类 Unix 操作系统上进程标识号的缩写。每个进程在创建时都会自动分配一个 PID。进程只不过是程序的运行实例,在类 Unix 系统上每个进程都有一个唯一的 PID。找出进程是否正在运行的最简单方法是运行 ps aux 命令和 grep 进程名称。如果您得到了进程名称/pid 的输出,则表示您的进程正在运行。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 或 Unix 终端 |
类别 | 流程管理 |
操作系统兼容性 | BSD • Linux • macOS • Unix |
预计阅读时间 | 3 分钟 |
确定你的 Linux 和 Unix 机器上的进程 pid 是否正在运行
只需使用 ps 命令,如下所示:
例如,让我们找出 mysqld 进程 (mysqld pid) 是否正在运行。类型:
示例输出:
$ ps aux | grep {process-name-here}
$ ps -aux | grep {process-to-find-here}
$ ps aux | grep mysqld
mysql 28290 1.1 2.7 340496 56812 ? Sl Jul31 348:27 /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --socket=/var/lib/mysql/mysql.sock
命令ps aux | grep mysqld用于列出 Linux 系统上运行 MySQL 守护进程 (mysqld) 的所有进程。grep命令充当过滤器。
确定 Linux 和 Unix 中运行的进程 PID
这|称为 shell 管道。它是一种将一个程序的输出连接到另一个程序的输入而无需任何临时文件的方法。在此示例中,ps 的输出作为 grep 命令的输入,用于在 Unix 和 Linux 下搜索所需的进程名称。对于多个进程,请使用egrep 命令,如下所示:
$ ps aux | grep -E 'app1|app2'
$ ps aux | grep -E 'nginx|mysql|apache'
$ ps aux | grep -E 'nginx|mysql|apache'
使用 pidof 查找正在运行的程序的进程 ID
pidof 命令查找指定程序的进程 ID (pid)。它会将这些 ID (PID) 打印到屏幕上。在某些系统上,此程序用于运行级别更改脚本,尤其是当系统具有类似 System-V 的 rc 结构时。在这种情况下,这些脚本位于 /etc/rc?.d 中,其中 ? 是运行级别。如果系统具有启动-停止-守护程序,则应改用该程序。例如,以下是如何通过查找其 PID 来查看 mysqld 或 nginx 是否正在运行:
示例输出:
$ pidof nginx
$ pidof mysqld
28290
使用 pgrep 命令确定进程的 PID
pgrep 命令搜索正在运行的系统并显示符合给定条件的所有进程的进程 ID。语法如下:
示例输出:
$ pgrep {processNameHere}
$ pgrep firefox
$ pgrep httpd
$ pgrep nginx
4241
在 Linux 上,也可以按如下方式使用 top 命令:
该选项以批处理模式启动 top 命令。换句话说,我将 top 的输出发送到其他程序,例如 grep/egrep。
$ top -bcn 1 | grep {process-to-search}
$ top -bcn 1 | grep firefox
-b
总结
您学习了如何在 Linux、macOS、Unix 和 *BSD 操作系统下找出正在运行的进程的 PID。有关更多信息,请使用 man 命令/info 命令或 help 命令查看以下手册页:
$ man ps
$ man grep
$ man pgrep
$ man pidof
$ man top