Убить процесс в 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

Проблема в том, что эта команда работает нормально, когда запущен cronscheduler.QuartzMain. Но когда этот процесс уже завершен, вышеприведенная команда выдает ошибку

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

Ваш вклад в устранение ошибок приветствуется

4 ответа

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

ИЛИ ЖЕ

$ sudo kill 3486

Пожалуйста, попробуйте ниже, это также поможет очистить идентификаторы дочерних процессов.

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
Другие вопросы по тегам