【发布时间】:2016-11-21 06:58:00
【问题描述】:
我将以下命令保存在 .sh 文件中
prog=$1
ps axf | grep $prog | grep -v grep | awk '{print "kill -9 " $1}'
当我执行它时得到以下输出
kill -9 3184
kill -9 20359
但我只需要它的第一行,因为那是唯一有效的 pid。如何从输出中删除第二行。
【问题讨论】:
-
最好使用
pkill。不要重新发明轮子! -
ps axf | grep $prog | grep -v grep的o/p是什么? -
grep后跟awk是一种反模式。您应该使用awk '!/grep/ { ... }来处理所有没有字符串“grep”的行。管道和叉子是昂贵的操作。 -
另一种反模式:kill -9。任何未被
-INT、-HUP或-QUIT之一杀死的程序都有错误。您应该使用这三个之一来允许被杀死的程序清理它使用的一些资源(例如删除临时文件)。 -
@IporSircer pkill 有效。谢谢。