分类: 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/j2sdk
root 3995 3994 0 21:14 ? 00:00:00 /usr/j2sdk
root 3996 3995 0 21:14 ? 00:00:04 /usr/j2sdk
root 3997 3995 0 21:14 ? 00:00:00 /usr/j2sdk
root 3998 3995 0 21:14 ? 00:00:00 /usr/j2sdk
root 3999 3995 0 21:14 ? 00:00:00 /usr/j2sdk
root 4000 3995 0 21:14 ? 00:00:00 /usr/j2sdk
root 4001 3995 0 21:14 ? 00:00:00 /usr/j2sdk
root 4002 3995 0 21:14 ? 00:00:00 /usr/j2sdk
root 4004 3995 1 21:14 ? 00:01:56 /usr/j2sdk
root 4005 3995 0 21:15 ? 00:00:00 /usr/j2sdk
其实就是要把这些行的第二列变成横向的,再全部写到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就行了.
写下这点东西才真正的学会awk和xarge ,大家不妨也试试??
更多关于find,xargs请参考