2017-07-17 120 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