Tomcat работает?

109

Интересно узнать, как люди обычно проверяют, работает ли Tomcat в среде Unix.

Я либо проверяю, что процесс запущен, используя

ps -ef | grep java
ps -ef | grep logging

или я проверяю, что номер порта активен

netstat -a | grep 8080

есть ли лучший способ проверить, что Tomcat работает? Вышеупомянутое кажется «хакерским» способом проверить, работает ли Tomcat.

зигги
источник

Ответы:

57

Почему grep ps, когда в $CATALINA_PIDфайл записан pid ?

У меня есть cronсценарий проверки d, который отправляет электронное письмо, когда tomcat не работает:

kill -0 `cat $CATALINA_PID` > /dev/null 2>&1
if [ $? -gt 0 ]
then
    echo "Check tomcat" | mailx -s "Tomcat not running" support@dom.com
fi

Я думаю, вы также можете использовать его wgetдля проверки здоровья вашего кота. Если у вас есть страница диагностики с пользовательской нагрузкой и т. Д., Вы можете периодически получать ее и анализировать, чтобы определить, что-то не так.

кендырь
источник
это так же легко сделать с окнами? Мог бы я просто изменить команды для эквивалентов Windows, добавить их в пакетный файл, а затем запланировать через планировщик?
liltitus27
Вы можете сделать что-то вроде строки tasklist |find /I "Tomcat" || echo "Tomcat not running"в файле bat, но вам может потребоваться найти java, а не Tomcat, в зависимости от имени процесса.
GL2014
1
Чтобы узнать, какое значение $ CATALINA_PID имеет установленный в ОС Tomcat, попробуйте: ps aewwx | grep CATALINA_PID и вы найдете его в выходных данных для запущенного процесса среди других переменных среды. В Debian 8 это значение: CATALINA_PID = / var / run / tomcat8.pid
Professor Falken
2
Важно отметить, что файл pid может не существовать, это зависит от среды и того, как был запущен tomcat. См. Этот ответ, чтобы создать файл pid при запуске.
Альберто де Паола
92

В своей системе Linux я запускаю Tomcat с помощью сценария startup.sh. Чтобы узнать, работает он или нет, я использую

ps -ef | grep tomcat  

Если выходной результат содержит весь путь к моей папке tomcat, значит, он запущен

Тай Тран
источник
68

попробуйте вместо этого, и поскольку для этого нужны привилегии root, используйте sudo

sudo service tomcat7 status
Кембои
источник
17
Что делать, если Tomcat не является службой? Вместо пакета.
emeraldhieu 06
1
@ Emerald214, в таком случае вы получитеtomcat7: unrecognized service
Яр
@Yar, это зависит от вашей версии tomcat
tmh
14

netstat -lnp | grep 8080вероятно, будет лучшим способом, если вы знаете порт прослушивания Tomcat. Если вы хотите быть уверены, что он работает, вам нужно будет установить соединение, отправить HTTP-запрос и получить ответ. Вы можете сделать это программно или с помощью любого веб-браузера.

Михаил Гольдштейн
источник
ЕСЛИ вы знаете порт, я думаю, что это самый простой способ, учитывая, что существуют варианты того, как вы проверяете, запущен ли исполняемый файл, в зависимости от того, как вы установили Tomcat, является ли он службой или нет и т. Д.
Джаффер
9

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

ps -ef | grep tomcat  

Это вернет путь tomcat, если tomcat запущен

netstat -a | grep 8080

где 8080 - порт tomcat

Дханиш Хосе
источник
7

Если tomcat установлен локально, введите следующий URL-адрес в окне браузера: {localhost: 8080}

Откроется домашняя страница Tomcat со следующим сообщением.

Если вы видите это, вы успешно установили Tomcat. Поздравляю!

Если tomcat установлен на отдельном сервере, вы можете ввести replace localhost на действительное имя хоста или Iess, где установлен tomcat.

Вышеупомянутое относится к стандартной установке, в которой tomcat использует порт по умолчанию 8080

Локанатх
источник
19
Если Tomcat установлен на отдельном сервере, отсутствие доступа к нему из браузера не скажет вам наверняка, запущен он или нет: он может быть недоступен.
Марко Лацкович
Я установил Tomcat8 на Ubuntu, но при переходе на localhost: 8080 появляется сообщение «Невозможно подключиться».
ibodi
1
Если у вас есть безголовый сервер в Linux, это не вариант.
Клаус Нджи
5

wget urlили curl url где URL является URL сервера Tomcat , который должен быть доступен, например: wget http://localhost:8080. Затем проверьте код выхода, если он 0 - кот работает.

Дикла
источник
5

Создайте сценарий оболочки, который проверяет, работает ли tomcat или нет, и установите cron для sh, чтобы он проверял каждые несколько минут, и автоматически запускает tomcat, если он не работает. Пример фрагмента кода ниже

TOMCAT_PID=$(ps -ef | awk '/[t]omcat/{print $2}')
echo TOMCAT PROCESSID $TOMCAT_PID

if [ -z "$TOMCAT_PID" ]
then
    echo "TOMCAT NOT RUNNING"
    sudo /opt/tomcat/bin/startup.sh
else
   echo "TOMCAT RUNNING"
fi
Девендра Дора
источник
Я создал сценарий оболочки, который всегда возвращает "TOMCAT RUNNING", даже если я остановил tomcat. Но когда я запускаю команду на консоли, все работает нормально.
Charles PHAM
Убедитесь, что имя сценария оболочки не является ключевым словом tomcat. Если сценарий имеет имя tomcat, то в списке процессов имя сценария оболочки будет отображаться, код будет думать, как если бы Tomcat запущен. Вы можете дать скрипту любое имя без ключевого слова tomcat
Девендра Дора
3

Я обнаружил, что Tomcat довольно привередлив в том, что запущенный процесс или открытый порт не обязательно означает, что он действительно обрабатывает запросы. Обычно я пытаюсь взять известную страницу и сравнить ее содержимое с предварительно вычисленным ожидаемым значением.

Алекс Хованский
источник
3

я всегда делаю

tail -f logs/catalina.out

Когда я вижу там

INFO: Server startup in 77037 ms

тогда я знаю, что сервер работает.

конкит
источник
2

Вы пытаетесь настроить систему оповещения? Для простого «пульса» выполните HTTP-запрос к порту Tomcat.

Для более тщательного мониторинга вы можете настроить JMX и / или SNMP для просмотра статистики JVM. Мы запускаем Nagios с плагином SNMP (соединяет JMX), чтобы проверять использование памяти Tomcat и запрашивать размер пула потоков каждые 10-15 минут.

http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html

Обновление (2012 г.):

Мы обновили наши системы, чтобы использовать «monit» для проверки процесса tomcat. Мне это и вправду нравится. При очень небольшой настройке он автоматически проверяет, что служба запущена, и автоматически перезапускается, если это не так. (отправка оповещения по электронной почте). Он может интегрироваться со скриптами /etc/init.d или проверять по имени процесса.

Уилл Гласс
источник
1

Поскольку мои экземпляры tomcat называются tomcat_. Например. tomcat_8086, я использую

#

ps aux | grep tomcat

Другой метод - использование утилиты nc

nc -l 8086 (номер порта )

Или

ps aux | grep java

Химаншу Чаухан
источник
1

Попробуйте эту команду

ps -ef | awk '/[t]omcat/{print $2}' 

Он вернет pid, если tomcat запущен.

Алин
источник
0
$ sudo netstat -lpn |grep :8080

Чтобы проверить номер порта

$ ps -aef|grep tomcat

Какой-нибудь кот работает под сервером.

tsssinfotech-K53U infotech # ps -aef|grep tomcat

корень 9586 9567 0 11:35 pts / 6 00:00:00 grep --colour = auto tomcat

Батчу Бхаргава
источник
0

В основном вы хотите протестировать

  1. Подключение к вашему экземпляру tomcat
  2. Соберите базовую статистику
  3. Запущен ли процесс unix

Я буду оценивать первые 2 варианта, так как третий уже получил достаточный ответ.

Проще всего просто разработать веб-страницу в своем веб-приложении, которая будет собирать некоторые базовые показатели и иметь клиента, который может считывать результаты или обнаруживать проблемы с подключением.

Для этого у вас есть несколько проблем

Йо Йо
источник
0

Вот мои два цента.

У меня есть несколько экземпляров tomcat, работающих на разных портах для настройки моего кластера. Я использую следующую команду для проверки каждого процесса, запущенного на разных портах.

/sbin/fuser 8080/tcp

Замените номер порта в соответствии с вашими потребностями.

И чтобы убить процесс, используйте -kкоманду выше.

  • Это намного быстрее, чем ps -efспособ или любые другие команды, где вы вызываете команду и вызываете другую grepповерх нее.
  • Хорошо работает с несколькими установками tomcat или любого другого сервера, который использует порт, фактически, на том же сервере.

Эквивалентная команда в BSDоперационных системах:fstat

Раджа Анбажаган
источник
0

tomcat.sh поможет вам это легко узнать.

Документ об использовании tomcat.sh говорит:

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

Итак, запустите команду в командной строке и проверьте pid:

$ tomcat.sh

Techflash
источник