Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1383643
  • 博文数量: 247
  • 博客积分: 10147
  • 博客等级: 上将
  • 技术积分: 2776
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-24 15:18
文章分类

全部博文(247)

文章存档

2013年(11)

2012年(3)

2011年(20)

2010年(35)

2009年(91)

2008年(87)

我的朋友

分类:

2008-10-08 19:48:46

学习pgrep,pkill命令
2007-12-29 16:58
名称
pgrep, pkill – 查找或者发信号给进程通过名称和其它属性。

语法
pgrep [-flvx] [-n | -o] [-d delim] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern]

pkill [-signal] [-fvx] [-n | -o] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern]

说明
pgrep程序检查在系统的中活动进程,报告进程属性匹配命令行上指定条件的进程的ID。每一个进程ID以一个十进制数表示,通过一个分割字符串和下 一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。例如,
pgrep -G other,daemon
匹配真实组ID是other或者是daemon的进程。如果多个条件被指派,这些匹配条件按逻辑与"AND"规则运算。例如,
pgrep -G other,daemon -U root,daemon
匹配进程它的属性是:
(真实的组ID是other或者是daemon) 与 (真实的用户ID是root或者是daemon)
pkill函数和pgrep相同,除了匹配的进程被信号通知就像用kill(1)替代了pgrep的进程ID的输出。一个信号名称或者数字可以作为pkill的第一个命令行选项。

选项
支持下面的选项:The following options are supported:
-c ctidlist 仅匹配列表中列出的ID的进程。
-d delim 指定每一个匹配的进程ID之间分割字符串。如果没有 -d 选项指定,默认的是新行字符。-d 选项仅在pgrep命令中有效。
-f正则表达式模式将执行与完全进程参数字符串 (从/proc/nnnnn/psinfo文件的pr_psargs字段获得)匹配。如果没有 -f 选项,表达式仅对执行文件名称(从/proc/nnnnn/psinfo文件pr_fname字段获得)匹配。
-g pgrplist仅匹配进程组ID在给定列表中的进程。如果组0包括在列表中,这个被解释为pgrep或者pkill进程的组ID。
-G gidlist仅匹配真实组ID在给定列表中的进程。每一个组ID可以使用组名称或者数字的组ID指定。
-J projidlist匹配项目ID在给定列表中的进程。每一个项目ID可以使用项目的名称或者数字项目ID来指定。
-l长格式输出。输出每一个匹配进程的名称连同进程ID。进程名称从pr_psargs 或者 pr_fname字段获得,依赖于-f选项是否指定。-l选项仅在pgrep命令中有效。
-n匹配最新(最近生成的)符合所有其它匹配条件的进程。不能和-o选项一起使用。
-o匹配最旧(最早生成的)符合所有其它匹配条件的进程。不能和-n选项一起使用。
-P ppidlist 仅匹配给定列表中父进程ID的进程。
-s sidlist 仅匹配进程会话ID在给定列表中的进程。如果ID 0在列表中,这个解释为pgrep或者pikill进程的会话ID。
-t termlist 仅匹配与给定列表中终端关联的进程。每一个终端指定为在/dev中终端设备路径名称的后缀。例如term/a 或者 pts/0。
-T taskidlist 仅匹配在给定列表中任务ID的进程。如果ID 0包括在列表中,这个解释为pgrep或者pikill进程的会话ID。
-u euidlist 仅匹配有效用户ID在给定列表中的进程。每个用户ID可以通过一个登录名称或者数字的用户ID指定。
-U uidlist 仅匹配真实的用户ID在给定列表中的进程。每个用户ID可以通过一个登录名称或者数字的用户ID指定。
-v 反向匹配。匹配所有的进程除了符合匹配条件的。
-x 仅认为进程其参数字符串或者执行文件名称正确匹配规定模式是匹配的进程。模式被认为是准确的当所有在进程参数字符串或者可执行文件名称的字符匹配模式。
-z zoneidlist 仅匹配区域ID在给定列表中的进程。每一个区域ID可以使用一个区域名称或者一个数字的区域ID指定。这个选项仅在全局区域中执行有效。如果pkill程序用来往其它区域的进程发信号,进城必须宣称{PRIV_PROC_ZONE}特权。
-signal 指定发往每一个匹配进程的信号。如果没有指定,SIGTERM 是默认的信号。-signal仅在pkill命令中作为第一个选项有效。信号可以是在signal.h中定义的没有SIG前缀的一个符号名字,也可是一个相应的信号数值。

操作

支持如下操作:
pattern
指定一个扩展正则表达式(Extended Regular Expression (ERE))模式来匹配可执行文件名称或者完整的进程参数字符串。ERE语法的完整描述参看regex(5)。

例子

例子1或者一个进程ID

获得sendmail的进程ID:

example% pgrep -x -u root sendmail
283

例子2终止一个进程

终止最近生成的xterm:

example% pkill -n xterm

Exit Status

如下退出值被返回:

0 一个或者多个进程被匹配。
1 没有进程被匹配。
2 指定了无效的命令行参数。
3 出现一个致命的错误。

 

 

ptree - 打印进程树
ptree 打印进程的继承关系。为了做到这一点,它打印包含指定 pid 或用户的进程树,使子进程从其相应的父进程缩进。所有数字参数都作为进程 ID 处理,否则假定为用户登录名。默认为所有进程。
  ptree 进程id    
  ptree  用户

sta [Tools CD] – 打印进程树
sta 工具提供与 ptree 类似的输出。

pargs - 打印进程参数、环境或辅助向量
pargs 实用工具检查目标进程或进程核心文件,并打印参数、环境变量和值,或者辅助向量。
  pargs core文件 
  pargs 进程id
  pargs -e  进程id  查看环境变量

 

pfiles – 报告进程中的开放文件(openfiles)
pfiles 命令报告每个进程中所有开放文件的 fstat(2) 和 fcntl(2) 信息。此外,如果信息可从 /proc/pid/path 获得,还将报告一个到文件的路径。这不一定是用来打开文件的那个名称。有关更多信息,请参见 proc(4)。
  pfiles 进程id

pstack – 打印 lwp/进程堆栈跟踪
pstack 命令打印每个进程或每个进程中指定 lwps 的 hex+symbolic 堆栈跟踪。

注意:对 Java 进程应使用 jstack

jstack – 打印 Java 线程堆栈跟踪 [参见 $JAVA_HOME/bin]
jstack 命令打印给定 Java 进程、核心文件或远程调试服务器的 Java 线程的 Java 堆栈跟踪。对于每个 Java 窗体、完整的类名称、方法名称、'bci'(字节码索引)、行号,只要可用则都打印出来。

pwdx – 打印进程的当前工作目录
pwdx 实用工具打印每个进程的当前工作目录。

pldd – 打印进程的动态库
pldd 命令列出连接到每个进程的动态库,包括使用 dlopen(3C) 明确附加的共享对象。另请参见 ldd(1)。

pmap - 展示有关进程地址空间的信息
pmap 实用程序打印有关进程地址空间的信息。默认情况下,pmap 按照实际的地址顺序展示所有映射到进程的映射关系。显示映射大小、标志和映射的对象名。

可以通过添加 -x 选项和 -s 选项提供扩展的输出,前者将提供有关每个映射的额外信息,后者将提供额外的 HAT 大小信息。

showmem [Tools CD] – 进程对私有内存和共享内存的使用率
showmem 实用工具包装 pmap 和 ps,以确定进程使用了多少私有和共享内存。

plimit - 获取或设置运行进程的资源限制
若使用第一种格式,plimit 实用工具将打印运行进程的资源限制。

若使用第二种格式,plimit 实用工具将设置进程 ID 列表(pid)中确定的进程的软(当前)限制和/或硬(最大)限制。举例来说,要将 trashapplet 进程(PID 为 897)的当前(软)核心文件限制为五 (5) MB,可以使用命令:plimit -c 5m,unlimited 897。

-bash-3.00$ plimit
usage:
    For each process, report all resource limits:
        plimit [-km] pid ...
        -k      report file sizes in kilobytes
        -m      report file/memory sizes in megabytes
    For each process, set specified resource limits:
        plimit -{cdfnstv} soft,hard ... pid ...
        -c soft,hard    set core file size limits
        -d soft,hard    set data segment (heap) size limits
        -f soft,hard    set file size limits
        -n soft,hard    set file descriptor limits
        -s soft,hard    set stack segment size limits
        -t soft,hard    set CPU time limits
        -v soft,hard    set virtual memory size limits
        (default units are as shown by the output of 'plimit pid')
 
 
如何查看当前端口被哪个进程所使用:
脚本port.sh
#!/bin/sh

for pid in `ls /proc`
do
       pf=`/usr/bin/pfiles $pid 2>/dev/null`
       if echo $pf | grep $1 > /dev/null 2>&1
       then
           echo $pid
           /usr/bin/pargs $pid
       fi
done
执行./port.sh 8080

阅读(2844) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

yangqing2020-04-28 23:11:35

请问plimit命令如何安装?

yangqing2020-04-28 23:11:29

请问plimit命令如何安装?

chinaunix网友2009-09-14 09:33:30

好东西,刚好用的上,谢谢