我想在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> [...]
您对删除错误的意见表示赞赏
答案 0 :(得分:1)
pkill
可以搜索完整的命令行。尝试
pkill -9 -f 'java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain'
您的命令可能会产生错误,因为它会发送超过pid(ps
的完整行)来杀死。
答案 1 :(得分:0)
我找到的解决方案之一是重定向错误消息: cat /etc/*.conf 2&gt;的/ dev / null的
答案 2 :(得分: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
答案 3 :(得分: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