Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1193139
  • 博文数量: 245
  • 博客积分: 10185
  • 博客等级: 上将
  • 技术积分: 2744
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-30 17:07
文章分类

全部博文(245)

文章存档

2015年(1)

2014年(1)

2013年(1)

2012年(1)

2011年(37)

2010年(20)

2009年(14)

2008年(38)

2007年(88)

2006年(44)

分类: LINUX

2006-11-22 00:12:52

工作中有时候需要杀类似下面的很多子进程,想单个的杀实在是很困难(尤其是子进程很多时),

有什么好的办法呢?

[root@tesr root]# ps -ef|grep java|grep cn.    

root      3994  3993  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      3995  3994  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      3996  3995  0 21:14 ?        00:00:04 /usr/j2sdk1.4.0_01/bin/java cn.c

root      3997  3995  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      3998  3995  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      3999  3995  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      4000  3995  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      4001  3995  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      4002  3995  0 21:14 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

root      4004  3995  1 21:14 ?        00:01:56 /usr/j2sdk1.4.0_01/bin/java cn.c

root      4005  3995  0 21:15 ?        00:00:00 /usr/j2sdk1.4.0_01/bin/java cn.c

 

其实就是要把这些行的第二列变成横向的,再全部写到kill -9 的后面就行了. 我们知道,

Awk就是用来取列的,但是awk取到的结果是分为多列的,

#ps -ef|grep java|grep cn.|awk {'print $2'}

3994

3995

3996

3997

3998

3999

4000

4001

4002

4004

4005

如何让这些列变成行呢,xargs就可以!

# ps -ef|grep java|grep cn.|awk {'print $2'}|xargs

3994 3995 3996 3997 3998 3999 4000 4001 4002 4004 4005

说白了,xarge就是把很多行变为一行!

如想删除数量比较多的文件
ls | xargs -n 20 rm -fr
ls
当然是输出所有的文件名(用空格分割)
xargs
就是将ls的输出,每20个为一组(以空格为分隔符),作为rm -rf的参数

也就是说将所有文件名20个为一组,由rm -rf删除,这样就不会超过命令行的长度了

 

再杀的话就很简单了!

Kill -9 3994 3995 3996 3997 3998 3999 4000 4001 4002 4004 4005就行了.

写下这点东西才真正的学会awkxarge ,大家不妨也试试??

 

更多关于find,xargs请参考

 

 

 

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