[英]Bash function to kill process
我为这个函数创建了一个别名,以便在bash中杀死进程:
在我的.bashrc文件上
kill_process(){
# $1 being a parameter for the process name
kill $(ps ax | grep "$1" | awk '{print $1}')
}
alias kill_process=kill_process
所以,假设我要杀死meteor
过程:
让我们看看所有的流星过程:
ps aux | grep 'meteor' | awk '{print $2}'
21565
21602
21575
21546
使用别名调用kill_process
函数
kill_process meteor
bash: kill: (21612) - No such process
因此, kill_process
函数有效地终止了meteor
进程,但它的kill
命令查找不存在的pid。 请注意, ps aux | grep
未列出pid 21612
ps aux | grep
。 有什么想法来改进kill_process
函数来避免这种情况吗?
我认为在你的情况下,killall命令会做你想要的:
killall NAME
正如Swoogan在他的回答中所暗示的那样,按名称杀死进程的标准方法是使用killall
。
至于你的kill_process
函数,过滤ps
的grep
表达式将匹配自己的grep
进程(你可以看到这个没有awk
运行管道),但是当调用kill
,该进程不再运行。 那是你看到的信息。
每次运行该命令时, grep
都会再次使用新的PID运行:这是您在测试时无法在列表中找到它的原因。
你可以:
ps
,将其传输到文件或变量,然后grep
grep
的PID从列表中过滤掉 (简单)supress kill
输出:
kill $(...) 2>/dev/null
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.