免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5787 | 回复: 10

ps 中我要指定列,awk不起作用,如何办? [复制链接]

论坛徽章:
0
发表于 2009-02-03 11:39 |显示全部楼层
ps -ef|pg
     UID   PID  PPID  C    STIME TTY       TIME COMMAND
    root     0     0  0  Jan 29  ?         0:22 swapper
    root     1     0  0  Jan 29  ?         0:04 init
    root     8     0  0  Jan 29  ?         0:00 kmemdaemon

ps -ef|awk '{print $1" "$8}'|pg
UID COMMAND
root 0:22
root 0:04
root 0:00
root 0:00
root 0:00

ps -ef|awk '{print $1" "$9}'|pg
可以得到部分进程的COMMAND列。

总结就是,ps -ef里面,同一个command列,输出结果中有的行用$8能显示,有的用$9才能显示,是因为有的行的空格和TAB键
不一致,比如有的行是3个空格,有的行是2个空格,导致$变量取列发生了变化。
我现在的需求就是,我如何能得到COMMAND列的值,而不管是$几列。

多谢!
很关键。

论坛徽章:
0
发表于 2009-02-03 11:41 |显示全部楼层
ps -ef |awk '{print $NF}'

论坛徽章:
0
发表于 2009-02-03 11:42 |显示全部楼层
ps -ef|awk '{print $1" "$2" "$4" "$8}'|sort -r +4|head -10
我是想统计系统中前10个最耗CPU资源的进程,我发现sort -r +4没起作用,
sort -r +n,这个n是说的print里面的N,还是显示出的结果的第几列?

比如上面的命令,C这个列在print $中是$4,但因为结果中C是排第三(前面是$1,$2),那我SORT是写+4还是写+3?
不好意思,真的不好意思啊。

论坛徽章:
0
发表于 2009-02-03 11:42 |显示全部楼层
跟你说,列不相同,都是时间惹的祸,呵呵

论坛徽章:
0
发表于 2009-02-03 11:43 |显示全部楼层
DBA你好,
$NF是说的啥?是说$COMMAND吗?
还是说的$列数?

论坛徽章:
0
发表于 2009-02-03 11:45 |显示全部楼层
ps -ef|awk '{print $NF}',还是乱。
呵呵,SHELL一点不熟悉,打扰各位了,真不好意思,应该自己看书的。

论坛徽章:
0
发表于 2009-02-03 11:48 |显示全部楼层

回复 #5 mophe 的帖子

$NF表示最后一列
你最后一列是command吗?

论坛徽章:
0
发表于 2009-02-03 11:51 |显示全部楼层

回复 #3 mophe 的帖子

你用ps -ef 看不到使用资源最多的吧,要不你就直接使用top吧
[root@localhost apache]# top -bn1 |sed -n '7,17p'
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                               
17165 root      15   0  3660  828  656 R  2.0  0.3   0:00.01 top                                                                    
    1 root      16   0  3100  552  476 S  0.0  0.2   0:00.42 init                                                                  
    2 root      34  19     0    0    0 S  0.0  0.0   0:00.05 ksoftirqd/0                                                            
    3 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 events/0                                                               
    4 root       5 -10     0    0    0 S  0.0  0.0   0:00.01 khelper                                                               
    5 root      15 -10     0    0    0 S  0.0  0.0   0:00.00 kacpid                                                                 
   20 root       5 -10     0    0    0 S  0.0  0.0   0:00.00 kblockd/0                                                              
   31 root      15   0     0    0    0 S  0.0  0.0   0:00.65 pdflush                                                               
   33 root      11 -10     0    0    0 S  0.0  0.0   0:00.00 aio/0                                                                  
   21 root      15   0     0    0    0 S  0.0  0.0   0:00.00 khubd

论坛徽章:
0
发表于 2009-02-03 11:53 |显示全部楼层
明白意思了。
test 5330     1  0 11:50:20 ?         0:00 /timesten/tt705/TimesTen/tt705/bin/timestend -initfd 13

比如这个,我用NF,显示出来是13了,HOHO。我就要/timesten/开始的。不好意思。

论坛徽章:
0
发表于 2009-02-03 11:55 |显示全部楼层
我其实是想写脚本来监控这些指标,因为要搞个监控平台。
GLANCE、TOP等,好象无法获取指定列的数据,
因为我想获取数据后插入到库中。就是类似于一般的监控软件一样。

[localhost:root]/#top -bn1 |sed -n '7,17p'
top: illegal option -- b
Usage:  top [-u] [-w] [-q] [-P] [-dx] [-sx] [-p pset_id] [-n number] [-f filename]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP