在linux中终止进程

在linux中终止进程,linux,kill,pkill,Linux,Kill,Pkill,我试图在linux中杀死一个进程 ps -aux root 14074 0.0 0.4 6586120 67452 pts/0 Sl 22:45 0:01 java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain 使用以下命令终止停止脚本中的进程 ps aux | grep "java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.

我试图在linux中杀死一个进程

ps -aux
root     14074  0.0  0.4 6586120 67452 pts/0   Sl   22:45   0:01 java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain
使用以下命令终止停止脚本中的进程

ps aux | grep "java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain" | \
grep -v grep | awk '{print $2}' | xargs kill -9
问题是,当运行cronscheduler.QuartzMain时,此命令工作正常。但是当这个进程已经被终止时,上面的命令就会抛出错误

Usage:
 kill [options] <pid|name> [...]
用法:
杀死[选项][…]

非常感谢您对删除错误的输入

pkill
可以通过完整的命令行进行搜索。试一试

pkill -9 -f 'java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain'

您的命令可能会产生错误,因为它发送的杀戮信息多于pid(来自
ps
的完整行)。

我找到的解决方案之一是重定向错误消息: cat/etc/*.conf 2>/dev/null

ps aux | grep httpd

httpd  3486  0.0  0.1   4248  1432 ?        S    Jul31   0:00 /usr/sbin/httpd -f /etc/httpd/httpd.conf

# kill 3486


请尝试以下操作,这也将有助于清除子进程id

for i in `ps -ef| grep "java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain" | grep -v grep | awk '{print $2}'`        
do
     ptree $i|awk '{print $1}' >>pids.txt
done
for i in $(cat pids.txt)
do
     kill -9 $i
done

您想删除错误消息,还是干脆忽略它?由于没有进程运行,您将无法获得任何进程id,因此最终命令将没有进程id@Evert我想删除错误消息看起来您只是从问题中删除了错误消息,但通常应避免使用
-9
。是的,只有在必要时才应使用
-9
for i in `ps -ef| grep "java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain" | grep -v grep | awk '{print $2}'`        
do
     ptree $i|awk '{print $1}' >>pids.txt
done
for i in $(cat pids.txt)
do
     kill -9 $i
done