命令简介

pidof 命令用于查找指定进程的进程 ID (PID)。它可以根据进程名称、全程序路径或其他条件来查找运行中的进程。该命令在系统管理和进程监控方面有着广泛的应用。

命令格式

1
pidof [选项] 程序名称

参数说明

参数 说明 备注
-c 只返回最新(启动时间最长)的进程的 PID 默认返回所有匹配进程的 PID
-o 省略不属于指定用户的进程 需要指定用户名或 UID
-s 只返回一个进程的 PID 如果有多个进程匹配,则随机返回一个
-x 进程名称必须精确匹配 默认情况下可以部分匹配

命令实例

基本用法

1.查找进程 ID

1
pidof ssh

这将查找所有正在运行的 ssh 进程的 PID。

2.查找特定用户的进程 ID

1
pidof -o root sshd

这将查找由 root 用户启动的 sshd 进程的 PID。

3.查找单个进程 ID

1
pidof -s firefox

如果有多个 firefox 进程正在运行,这将只返回其中一个进程的 PID。

4.精确匹配进程名称

1
pidof -x "/usr/bin/python3"

这将查找精确命令路径为 /usr/bin/python3 的进程的 PID。

扩展用法

1.结合 kill 命令终止进程

1
kill $(pidof apache2)

这将终止所有正在运行的 apache2 进程。

2.在脚本中使用 pidof

1
2
3
4
5
6
7
8
9
10
#!/bin/bash

process_name="nginx"
pid=$(pidof $process_name)

if [ -n "$pid" ]; then
echo "Process $process_name is running with PID $pid"
else
echo "Process $process_name is not running"
fi

这个脚本使用 pidof 命令检查 nginx 进程是否正在运行,并根据结果打印相应的消息。

高级用法

1.使用正则表达式匹配进程名称

1
pidof $(pgrep -f "^/usr/bin/python3.*script.py")

这将查找命令行包含 /usr/bin/python3 并运行 script.py 脚本的进程的 PID。它使用了 pgrep 命令来匹配进程名称的正则表达式,然后将结果传递给 pidof 命令获取 PID。

2.排除指定进程

1
comm -23 <(pidof bash | sort) <(pidof sh | sort) | xargs pidof

这将查找所有正在运行的进程,但排除 bashsh 进程。它使用 comm 命令找出两个进程列表的差集,然后将结果传递给 pidof 命令获取剩余进程的 PID。

3.获取进程的父进程 ID

1
pidof -p $(pidof bash)

这将查找所有 bash 进程的父进程 ID。它首先使用 pidof 获取 bash 进程的 PID,然后将结果传递给 pidof -p 选项获取父进程的 PID。

以上是关于 pidof 命令的详细文档,包括命令简介、语法格式、参数使用说明、演示实例以及扩展和高级使用方法。pidof 命令是一个非常有用的工具,可以方便地查找进程 ID,并与其他命令结合使用实现强大的功能。