Чи працює Томкат?


109

Цікаво знати, як люди зазвичай перевіряють, чи працює Tomcat в середовищі Unix.

Я або перевіряю, чи працює процес

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

або я перевіряю, чи активний номер порту

netstat -a | grep 8080

чи є кращий спосіб перевірити, чи працює Tomcat? Згадане вище, здається, є "хакітним" способом перевірити, чи працює Tomcat.

Відповіді:


57

Чому grep ps, коли pid записано у $CATALINA_PIDфайл?

У мене є cronсценарій перевірки, який надсилає електронне повідомлення, коли 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
Професор

2
Важливо зауважити, що pid-файл може не існувати, це залежить від навколишнього середовища та способу запуску tomcat. Дивіться цю відповідь, щоб створити pid-файл під час запуску.
Альберто де Паола

92

У моїй системі Linux я запускаю Tomcat зі сценарію startup.sh. Щоб знати, працює він чи ні, я використовую

ps -ef | grep tomcat  

Якщо результат виводу містить весь шлях до моєї папки tomcat, він працює


68

спробуйте це замість цього, тому що для цього потрібні кореневі привілеї, використовуйте sudo

sudo service tomcat7 status

17
Що робити, якщо Tomcat не є послугою? Замість пакету.
смарагдовий

1
@ Emerald214 у такому разі ви отримаєтеtomcat7: unrecognized service
Яр

@Yar, це залежить від вашої версії tomcat
tmh

14

netstat -lnp | grep 8080Можливо, це був би найкращий спосіб, якби ви знали порт прослуховування Tomcat. Якщо ви хочете бути впевнені, що це функціонально, вам доведеться встановити з'єднання та надіслати HTTP-запит та отримати відповідь. Це можна зробити програмно або за допомогою будь-якого веб-браузера.


Якщо ви знаєте порт, я думаю, що це найпростіший спосіб, враховуючи, що існують варіанти в тому, як ви перевіряєте, чи виконується виконуваний файл залежно від того, як ви встановили Tomcat, чи є його послуга чи ні тощо.
Jaffer

9

Ви можете перевірити стан tomcat такими способами:

ps -ef | grep tomcat  

Це поверне шлях до tomcat, якщо він працює

netstat -a | grep 8080

де 8080 - порт Tomcat


7

Якщо tomcat встановлено локально, введіть наступну URL-адресу у вікні браузера: {localhost: 8080}

Це відобразить домашню сторінку Tomcat із наступним повідомленням.

Якщо ви бачите це, ви успішно встановили Tomcat. Вітаємо!

Якщо tomcat встановлений на окремому сервері, ви можете ввести заміну 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 - tomcat вмикається.


4

Створіть скрипт Shell, який перевіряє, чи 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. Але коли я запускаю команду на консолі, вона спрацювала чудово.
Чарльз ФАМ

Переконайтеся, що ім'я скрипта оболонки не є ключовим словом 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}' 

Він поверне під, якщо працює tomcat.


0
$ sudo netstat -lpn |grep :8080

Щоб перевірити номер порту

$ ps -aef|grep tomcat

Чи працює якийсь tomcat під сервером.

tsssinfotech-K53U infotech # ps -aef|grep tomcat

корінь 9586 9567 0 11:35 бали / 6 00:00:00 grep --colour = auto tomcat


0

В основному ви хочете протестувати

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

Я оцінюю перші 2 варіанти, оскільки на 3-й уже достатньо відповіли.

Найпростіше - просто розробити веб-сторінку на своєму WebApp, яка збирає основні показники та має клієнта, який може читати результати або виявляти проблеми з підключенням.

Для цього у вас є кілька питань


0

Ось два мої центи.

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

/sbin/fuser 8080/tcp

Замініть номер порту відповідно до ваших потреб.

І для вбивства використовуйте процес -kу наведеній вище команді.

  • Це набагато швидше, ніж ps -efспосіб або будь-які інші команди, де ви викликаєте команду і викликаєте іншу grepповерх неї.
  • Добре працює з декількома установками tomcat, або будь-яким іншим сервером, який використовує порт, фактично працює на тому ж сервері.

Еквівалентною командою в BSDопераційних системах єfstat


0

tomcat.sh допомагає вам це легко знати.

tomcat.sh використання doc каже:

немає аргументу: відобразити ідентифікатор процесу tomcat, якщо він працює, інакше нічого не робити

Отже, запустіть команду у вашому командному рядку та перевірте наявність pid:

$ tomcat.sh

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.