2017-07-17 110 views
-1

我试图杀死在linux的过程终止进程在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 

发出kill在停止脚本中的过程是这样的命令工作正常时cronscheduler.QuartzMain正在运行。但是,当这个过程已经杀那么上面的命令抛出错误上移除错误

Usage: 
kill [options] <pid|name> [...] 

你输入赞赏

+1

是否要删除错误消息,或者干脆忽略它? – Evert

+0

由于不会有运行过程中,你不会得到任何进程的ID,这样最后的命令将不具有进程id – Gaurav

+0

@埃弗特我想删除错误信息 – Zaks

回答

1

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

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

你的命令可能会产生错误,因为它发出比PID(从ps完整的线)杀多。

+0

看起来你只是把它从这个问题,但通常'-9应该避免。 – hek2mgl

+0

是的,只有在必要时才应使用'-9'。 – clemens

0

一个我找到了解决的是重定向错误消息: 猫/etc/*.conf 2>的/ dev/null的

0
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 

OR

$ sudo kill 3486 
0

请尝试以下这将有助于清除子进程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