Ответ 1
Нет необходимости знать Tomcat pid (идентификатор процесса), чтобы убить его. Вы можете использовать следующую команду, чтобы убить Tomcat:
pkill -9 -f 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
Нет необходимости знать Tomcat pid (идентификатор процесса), чтобы убить его. Вы можете использовать следующую команду, чтобы убить Tomcat:
pkill -9 -f tomcat
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
Надеюсь, что это поможет.
Tomcat не работает. В вашем поиске показан процесс grep, который ищет tomcat. Конечно, к тому моменту, когда вы увидите этот вывод, grep больше не работает, поэтому pid уже недействителен.
Как уже отмечалось, вы видели процесс 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
.
просто введите команду ниже в терминале
ps -ef |grep 'catalina'
скопируйте значение идентификатора процесса, затем введите следующую команду и вставьте идентификатор процесса
kill -9 processid
ps -ef
отобразит все текущие процессы
| grep tomcat
передаст результат на grep
и будет искать экземпляры tomcat. Поскольку grep
- это сам процесс, он возвращается из вашей команды. Тем не менее, на вашем выходе нет процессов Tomcat.
ps -Af | grep "tomcat" | grep -v grep | awk '{print$2}' | xargs kill -9
В tomcat/bin/catalina.sh
добавьте следующую строку после окончания раздела комментария:
CATALINA_PID=someFile.txt
то, чтобы убить исполняемый экземпляр Tomcat, вы можете использовать:
kill -9 `cat someFile.txt`
Это сработало для меня:
Шаг 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: вывод
Мне пришлось прекратить процесс activeMQ java среди многих процессов java на сервере, и этот запускается конкретным пользователем (имя пользователя - activemq). Таким образом, хорошим способом разделения может быть запуск конкретного пользователя:
ps -ef | grep "activemq" | awk '{print $2}' | xargs kill -9
как @Aurand, чтобы сказать, tomcat не работает. вы можете использовать
ps -ef |grep java | grep tomcat
, чтобы игнорировать программы ps
.
работал у меня в файлах сценариев оболочки.
kill -9 $(ps -ef | grep 8084 | awk 'NR==2{print $2}')
NR - количество записей во входном файле.
awk
может найти или заменить текст
Чтобы убить процесс по имени, я использую следующие
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
- это идентификатор процесса.
это работает очень хорошо (найти процессы Tomcat и принудительно убить их)
ps -ef | grep tomcat | awk '{print $2}' | xargs kill -9