Как я могу убить этот процесс tomcat в терминале?

Используя ps -ef | grep tomcat, я нашел сервер tomcat, который запущен. Я попробовал kill -9 {id}, но он возвращает "Нет такого процесса". Что я делаю не так?

Вот пример:

Admins-MacBook-Pro:test-parent tom.maxwell$ ps -ef | grep tomcat
2043706342 39707 39695   0  3:40PM ttys000    0:00.00 grep tomcat
Admins-MacBook-Pro:test-parent tom.maxwell$ kill -9 39707
-bash: kill: (39707) - No such process

Ответ 1

Нет необходимости знать Tomcat pid (идентификатор процесса), чтобы убить его. Вы можете использовать следующую команду, чтобы убить Tomcat:

pkill -9 -f tomcat

Ответ 2

ps -ef | grep tomcat | awk '{print $2}' | xargs kill -9

https://gist.github.com/nrshrivatsan/1d2ea4fcdcb9d1857076

Часть 1

ps -ef | grep tomcat = > Получить все процессы с помощью tomcat grep

Часть 2

Как только у нас есть детали процесса, мы передаем его в часть 2 script

awk '{print $2}' | xargs kill -9 = > Получить второй столбец [Идентификатор процесса] и убить их с помощью опции -9

Надеюсь, что это поможет.

Ответ 3

Tomcat не работает. В вашем поиске показан процесс grep, который ищет tomcat. Конечно, к тому моменту, когда вы увидите этот вывод, grep больше не работает, поэтому pid уже недействителен.

Ответ 4

Как уже отмечалось, вы видели процесс grep. Если вы хотите ограничить вывод на tomcat, у вас есть две альтернативы

  • завершает первый найденный символ в классе символов

    ps -ef | grep '[t]omcat'
    

    Это также ищет tomcat, но пропускает запись grep [t]omcat, потому что она не соответствует [t]omcat.

  • используйте настраиваемый формат вывода с ps

    ps -e -o pid,comm | grep tomcat
    

    Это показывает только pid и имя процесса без аргументов процесса. Итак, grep указан как grep, а не как grep tomcat.

Ответ 5

просто введите команду ниже в терминале

ps -ef |grep 'catalina'

скопируйте значение идентификатора процесса, затем введите следующую команду и вставьте идентификатор процесса

 kill -9 processid

Ответ 6

ps -ef

отобразит все текущие процессы

| grep tomcat

передаст результат на grep и будет искать экземпляры tomcat. Поскольку grep - это сам процесс, он возвращается из вашей команды. Тем не менее, на вашем выходе нет процессов Tomcat.

Ответ 7

ps -Af | grep "tomcat" | grep -v grep | awk '{print$2}' | xargs kill -9

Ответ 8

В tomcat/bin/catalina.sh

добавьте следующую строку после окончания раздела комментария:

CATALINA_PID=someFile.txt

то, чтобы убить исполняемый экземпляр Tomcat, вы можете использовать:

kill -9 `cat someFile.txt`

Ответ 9

Это сработало для меня:

Шаг 1: эхо ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'

Эта команда возвращает команду "process_id"

Шаг 2: kill -9 process_id
// Этот process_id аналогичен шагу 1: вывод

Ответ 10

Мне пришлось прекратить процесс activeMQ java среди многих процессов java на сервере, и этот запускается конкретным пользователем (имя пользователя - activemq). Таким образом, хорошим способом разделения может быть запуск конкретного пользователя:

ps -ef | grep "activemq" | awk '{print $2}' | xargs kill -9

Ответ 11

как @Aurand, чтобы сказать, tomcat не работает. вы можете использовать

ps -ef |grep java | grep tomcat, чтобы игнорировать программы ps.

работал у меня в файлах сценариев оболочки.

Ответ 12

kill -9 $(ps -ef | grep 8084 | awk 'NR==2{print $2}')

NR - количество записей во входном файле. awk может найти или заменить текст

Ответ 13

Чтобы убить процесс по имени, я использую следующие

ps aux | grep "search-term" | grep -v grep | tr -s " " | cut -d " " -f 2 | xargs kill -9

tr -s " " | cut -d " " -f 2 совпадает с awk '{print $2}'. tr подавляет пространства табуляции в одном пространстве и cut снабжается <SPACE> в качестве разделителя, а второй столбец запрашивается. Второй столбец на выходе ps aux - это идентификатор процесса.

Ответ 14

это работает очень хорошо (найти процессы Tomcat и принудительно убить их)

ps -ef | grep tomcat | awk '{print $2}' | xargs kill -9