--> pgrep和pkill可用于检索、发送信号给符合条件的进程。
pgrep用于从进程进中匹配出符合指定条件的进程,并输出进程的进程号,示例:
[root@supersun ~]# pgrep http
1861
12975
12976
12977
12978
12979
12980
12981
下面看一下其支持的选项:
-d选项用于设定输出进程ID之间的分隔符,如:
[root@supersun ~]# pgrep http -d ,
1861,12975,12976,12977,12978,12979,12980,12981,12982,22273,22274,22275,22276,22277,22278,22279,22280,22281
-f可用将pattern应用于整个命令行(包括参数和变量),而非命令的名称:
[root@supersun ~]# pgrep -f server -l
1701 /usr/bin/hidd --server
2322 /usr/libexec/bonobo-activation-server --ac-activate --ior-output-fd=17
2376 /usr/libexec/gam_server
下面是未使用-f选项的输出:
[root@supersun ~]# pgrep server -l
2376 gam_server
-g 指定GID
-G 指定real GID
-l 用于列出进程名,前面的示例已使用
-n 输出符合条件的最年轻的进程
-o 输出符合条件的新老的进程
-P 指定父进程ID号
-s 指定session ID,前面的关于ps的介绍中有关于session ID的输出(此处我截取部分输出):
[root@supersun.biz ~]#ps -ejH
PID PGID SID TTY TIME CMD
1 1 1 ? 00:00:00 init
1782 1782 1782 ? 00:00:00 avahi-daemon
1783 1783 1783 ? 00:00:00 avahi-daemon
1791 1791 1791 ? 00:00:04 hald
1792 1791 1791 ? 00:00:00 hald-runner
1798 1791 1791 ? 00:00:00 hald-addon-acpi
1810 1791 1791 ? 00:00:01 hald-addon-keyb
1819 1791 1791 ? 00:00:03 hald-addon-stor
1842 1841 1841 ? 00:00:00 smartd
1846 1846 1846 tty1 00:00:00 mingetty
1847 1847 1847 tty2 00:00:00 mingetty
SID 即session ID
-t 指定终端名,去掉/dev/前缀
[root@supersun.biz ~]#pgrep -l -t pts/7
4856 bash
5050 ssh
-u 指定eUID
-U 指定rUID
-v 取反,即输出不匹配条件的进程。
-x 精确匹配
[root@supersun.biz ~]#pgrep -x evolut -l
[root@supersun.biz ~]#pgrep evolut -l
2458 evolution
2475 evolution-data-
2488 evolution-alarm
[root@supersun.biz ~]#pgrep -x evolution -l
2458 evolution
pkill和pgrep的用法基本是相同的,通过-signal不将signal发送给匹配的进程,另外-l这个选项是pgrep的专有选项。

发表评论