【发布时间】:2015-10-04 02:56:41
【问题描述】:
我为这个函数创建了一个别名,以便在 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。 有什么想法可以改进kill_process 函数来避免这种情况吗?
【问题讨论】:
-
可能四个进程 ID 的原始列表之一是
grep 'meteor'命令(因为它的调用行与模式meteor匹配)。$(ps ax | grep "$1" | awk ...)行生成的进程 ID 之一是 that grep 进程。但是当 pid 列表被提供给kill时,该 grep 进程已经停止。 -
或者只使用
pkill。 -
那个别名没有用。
标签: bash