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。