免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7574 | 回复: 2
打印 上一主题 下一主题

[故障求助] 按进程名结束进程[求助] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-01 10:51 |只看该作者 |倒序浏览
me 是AIX 下了进程,现要根据进程名进行结束,所以,简单可以写成

ps -e|grep me  然后根据得到的me的进程号执行 kill -9 me-pid
如果合在一块呢?

ps -e |grep me |awk '{ print $1}' |xargs kill -9 或是
ps -e |grep me |awk '{print "kill -9 " $1 }'|/bin/sh
两个基本思路都是一样的。这样就把me给结束了,但也有问题,因为
vlpar3:/path/bin>ps -e |grep me
  516194  pts/0  0:00 me
  528530  pts/5  0:00 me1
  548958 pts/18  0:00 werme
  971004      -  1:19 timeproc
  991444      -  0:57 timeproc

这样的话,就把多余的也给结束了,所以就要在正则匹配的时候进行过滤,改进为
ps -e |grep "me$" |awk '{ print $1}' |xargs kill -9
另一个也类似,现在又出现了一个问题,这样的话只能保证以me结尾的进程,但是不同前缀也被一块结束了,所以还得改进
ps -e |grep -w me |awk '{ print $1}' |xargs kill -9
这样能保证me是一个单词,可如果像我一样找事的人还会找点事,我做了这么一件事

vlpar3:/path/bin>cp me "\ me"
一不小心生成了一个 " me"的程序名,这样的话,在匹配的时候,它还是一个单词,但却不应该被结束的进程,所以我想了另一个办法
因为存在
vlpar3:/path/bin>ps -e |grep "me$"
  516194  pts/0  0:00 me
  548958 pts/18  0:00 werme

这样的话,在进程名前面会有一个空格,再往前应是一个数字,那么改为
ps -e |grep "[0-9] me$"|awk '{ print $1}' |xargs kill -9
这样行吗?我做了一件我自己也不能原谅自己的事
vlpar3:/path/bin>cp me  "0:00\ me"
我ls 了一下, My God ,现在有两个变态的程序名字
" me"和"0:00 me"
到目前为止,我不会了,我不知道该怎么办了,我想过ps的时候先将进程名输出,再输出pid 但AIX很不给面子,我试了N多,就是不行,晕.......

我在网上努力的搜了搜,发现Linux下有个killall,但好像结束的是当前用户的所有进程。。。

所以,我的问题还在继续中,不知道什么时候能解决。。。

要求只结束me进程。。。

[ 本帖最后由 leshy 于 2007-12-1 12:00 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-12-02 11:09 |只看该作者
好久没有弄技术了,awk的语法很模糊了,以下SHELL可能有误:

ps -ef |awk 'if ($4=="me") {print $1}'|xargs kill -9

论坛徽章:
0
3 [报告]
发表于 2007-12-03 22:33 |只看该作者
哦,和我写的差不多,也还是没解决我的问题,等待高手中。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP