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