Linux echo在ps aux | grep-ie$1 | awk'{print$2}'| xargs kill-9后不工作

Linux echo在ps aux | grep-ie$1 | awk'{print$2}'| xargs kill-9后不工作,linux,bash,command-line,Linux,Bash,Command Line,我正在创建一个简单的脚本来终止包含特定单词的所有进程 代码如下所示: #!/bin/bash ps aux | grep -ie $1 | awk '{print $2}' | xargs kill -9 echo $(ps aux | grep -ie $1) 最后,我通过使用一个特定的字打印所有进程来进行简单的验证,但是当我使用./kill.sh tomcat执行脚本时,我得到以下结果: kill: (3341): No such process Killed Echo不工作了 您

我正在创建一个简单的脚本来终止包含特定单词的所有进程

代码如下所示:

#!/bin/bash 

ps aux | grep -ie $1 | awk '{print $2}' | xargs kill -9

echo $(ps aux | grep -ie $1)
最后,我通过使用一个特定的字打印所有进程来进行简单的验证,但是当我使用./kill.sh tomcat执行脚本时,我得到以下结果:

kill: (3341): No such process
Killed
Echo不工作了

您正在执行:

./kill.sh tomcat
这意味着在ps aux输出中,您将看到自己:

# inside sccript
$ ps aux | grep tomcat
...
user     770205  0.0  0.0   9696  2752 pts/4    S+   14:42   0:00 ./kill.sh tomcat
...
然后xargskill-9将杀死您的脚本

不要使用ps aux | grep。使用pgrep

记住引用变量展开式

用于检查常见的脚本错误

echo$。。这是对回声的无用利用。只需在大括号内执行

pgrep "$1" | xargs --no-run-if-empty kill -0
pgrep "$1" | xargs --no-run-if-empty ps u
您正在执行:

./kill.sh tomcat
这意味着在ps aux输出中,您将看到自己:

# inside sccript
$ ps aux | grep tomcat
...
user     770205  0.0  0.0   9696  2752 pts/4    S+   14:42   0:00 ./kill.sh tomcat
...
然后xargskill-9将杀死您的脚本

不要使用ps aux | grep。使用pgrep

记住引用变量展开式

用于检查常见的脚本错误

echo$。。这是对回声的无用利用。只需在大括号内执行

pgrep "$1" | xargs --no-run-if-empty kill -0
pgrep "$1" | xargs --no-run-if-empty ps u

如果您想基于一个模式结束进程,您可以使用pkill工具,例如,pkill-e将显示结束的任务

*me@CPX-QQ9EFGSXDJ4:~$pkill-e ping


ping终止pid 8382*

如果您想基于模式结束进程,您可以使用pkill工具,例如,pkill-e将显示结束的任务

*me@CPX-QQ9EFGSXDJ4:~$pkill-e ping


ping杀死了pid 8382*

你在自杀。还有回声$。。。是对echo的无用使用,就像echo$echo$echo$echo$。。。。。。。只执行你想执行的东西。为什么不使用killall呢?在Linux中查找pgrep和pkill命令。他们是为这种工作设计的。你在自杀。还有回声$。。。是对echo的无用使用,就像echo$echo$echo$echo$。。。。。。。只执行你想执行的东西。为什么不使用killall呢?在Linux中查找pgrep和pkill命令。问题是pgrep并没有为tomcat返回任何东西,因为tomcat只是它为java返回的类路径的一部分,但我不想杀死所有java,所以我需要ps aux|grepmarko 16802 5.5 5.0 10048692 816396 pts/0 Sl 11:13 0:37/home/marko/.sdkman/candidates/java/current/bin/java-Dignore.annowed.dirs=-classpath/home/marko/servers/phoenix/runtime/host/bin/bootstrap.jar:/home/marko/servers/phoenix/runtime/host/bin/tomcat-juli.jar-Dcatalina.base=/home/marko/servers/phoenix/runtime/host``pgrep-f正在工作!只是我认为kill应该与-9而不是-0一起使用,正如另一个答案中提到的,使用pkill。问题是pgrep没有为tomcat返回任何东西,因为tomcat只是它将为java返回的类路径的一部分,但我不想杀死所有java,所以我需要ps aux|grepmarko 16802 5.5 5.0 10048692 816396 pts/0 Sl 11:13 0:37/home/marko/.sdkman/candidates/java/current/bin/java-Dignore.annowed.dirs=-classpath/home/marko/servers/phoenix/runtime/host/bin/bootstrap.jar:/home/marko/servers/phoenix/runtime/host/bin/tomcat-juli.jar-Dcatalina.base=/home/marko/servers/phoenix/runtime/host``pgrep-f正在工作!只是我认为kill应该与-9而不是-0一起使用,正如另一个答案中所指出的,使用pkill。