基于名字及其属性检索进程或向进程发送信号
pgrep [-flx] [-n|-o|-v] [-d delimiter] [-g pgrplist] [-G gidlist] [-P ppidlist] [-s sidlist] [-t termlist] [-u euidlist] [-U uidlist] [pattern]
pkill [-signal] [-fx] [-n|-o|-v] [-g pgrplist] [-G gidlist] [-P ppidlist] [-s sidlist] [-t termlist] [-u euidlist] [-U uidlist] [pattern]
pgrep命令用于检索当前正在运行的进程,显示匹配选择准则的进程的PID。其中,pattern是一个扩展的正则表达式,用于匹配进程名或命令行。
在选择进程时,指定的匹配准则是逻辑与的关系,所有的准则都必须匹配。例如,“pgrep -u root sshd”命令表示仅选择名为sshd且归属超级用户root的进程,但“pgrep -u root,daemon”命令表示可以选择root或daemon拥有的进程。
利用pkill命令,可以向符合选择准则的进程发送指定的信号(默认的信号是SIGTERM)。
当前,进程名的匹配仅限于/proc/pid/stat文件提供的15个字符,但是,如果指定了“-f”选项,则可以匹配/proc/pid/cmdline文件提供的完整命令行。其中,pid是进程的PID。
注意,当使用pgrep或pkill命令检索进程时,两个命令都不会返回自己。
-d delimiter 设置一个字符串,用于分隔输出的每个进程ID,默认值是换行符(pgrep)。
-f 通常,模式参数仅用于匹配进程名。当指定了“-f”选项时,可对整个命令行进行模式匹配检索。
-g pgrplist 仅选择匹配指定进程组ID的进程。进程组0是pgrep或pkill所在的进程组。
-G gidlist 选择仅匹配指定真实用户组ID的进程。其中gidlist可以是一个或多个用户组名或数字形式的用户组ID。
-l 列出进程名及进程ID(pgrep)。
-n 仅选择最新的(最近启动的)匹配进程。
-o 仅选择最老的(最早启动的)匹配进程。
-P ppidlist 仅选择匹配指定父进程ID的进程。其中ppidlist可以是一个或多个进程ID。
-s sidlist 仅选择匹配指定进程会话ID的进程。会话ID 0是pgrep或pkill自己的会话ID。
-t termlist 仅选择与指定控制终端匹配的进程。其中termlist可以是一个或多个终端设备文件名(省略“/dev/”前缀)。
-u euidlist 选择仅匹配指定有效用户ID的进程。其中euidlist可以是一个或多个用户名或数字形式的用户ID。
-U uidlist 选择仅匹配指定真实用户ID的进程。其中uidlist可以是一个或多个用户名或数字形式的用户ID。
-v 选择不匹配的进程。
-x 仅选择其名字或命令行(如果指定了“-f”选项)恰好匹配模式参数的进程。
-signal 定义发送给匹配进程的信号,数字形式或信号名均可(pkill命令使用)。
1. 查询用户gqxing启动的bash进程的PID。
$ pgrep -u gqxing bash 2524 3078 3131 $
2. 在手工修改系统crontab文件之后,为使提交的后台作业立即生效,可以向crond守护进程发送SIGHUP信号,令其重读crontab文件。
# pkill -HUP crond #
3. 给出所有bash进程的详细信息。
$ ps -fp $(pgrep -d' ' -x bash) UID PID PPID C STIME TTY STAT TIME CMD gqxing 2524 2522 0 04:36 pts/0 Ss 0:00 bash root 2775 2767 0 05:19 pts/0 S+ 0:00 bash gqxing 3078 3074 0 05:35 pts/1 Ss 0:00 -bash gqxing 3131 2522 0 05:41 pts/2 Ss+ 0:00 bash $
索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z