-1

我正在尝试杀死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> [...]

感谢您对消除错误的投入

4

4 回答 4

1

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

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

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

于 2017-07-17T06:22:34.230 回答
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

或者

$ sudo kill 3486
于 2017-07-17T07:33:09.827 回答
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
于 2017-07-17T07:43:24.617 回答
0

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

于 2017-07-17T06:56:07.613 回答