Tomcat có đang chạy không?


109

Quan tâm đến cách mọi người thường kiểm tra xem Tomcat có đang chạy trên môi trường Unix hay không.

Tôi hoặc kiểm tra xem quá trình đang chạy bằng cách sử dụng

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

hoặc tôi kiểm tra xem số cổng đang hoạt động

netstat -a | grep 8080

có cách nào tốt hơn để kiểm tra xem Tomcat đang chạy không? Ở trên có vẻ là một cách 'hacky' để kiểm tra xem Tomcat có đang chạy hay không.

Câu trả lời:


57

Tại sao grep ps, khi pid đã được ghi vào $CATALINA_PIDtệp?

Tôi có một crontập lệnh 'd checker sẽ gửi email khi tomcat gặp sự cố:

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

Tôi đoán bạn cũng có thể sử dụng wgetđể kiểm tra sức khỏe của tomcat của bạn. Nếu bạn có trang chẩn đoán với tải của người dùng, v.v., bạn có thể tìm nạp nó theo định kỳ và phân tích cú pháp để xác định xem có điều gì không ổn hay không.


điều này có dễ thực hiện với các cửa sổ không? Tôi sẽ chỉ sửa đổi các lệnh cho các cửa sổ tương đương, ném nó vào một tệp hàng loạt, và sau đó lập lịch thông qua bộ lập lịch?
liltitus27

Bạn có thể làm điều gì đó dọc theo các dòng tasklist |find /I "Tomcat" || echo "Tomcat not running"trong tệp bat, nhưng bạn có thể cần tìm java, không phải Tomcat tùy thuộc vào tên quy trình là gì.
GL2014

1
Để tìm hiểu giá trị của $ CATALINA_PID từ Tomcat được cài đặt hệ điều hành của bạn, hãy thử: ps aewwx | grep CATALINA_PID và bạn sẽ tìm thấy nó trong đầu ra của quá trình đang chạy, trong số các biến môi trường khác. Trong Debian 8 giá trị này là: CATALINA_PID = / var / run / tomcat8.pid
Giáo sư Falken

2
Điều quan trọng cần lưu ý là tệp pid có thể không tồn tại, nó phụ thuộc vào môi trường và cách tomcat được khởi động. Xem câu trả lời này để tạo tệp pid khi khởi động.
Alberto de Paola,

92

Trên hệ thống linux của tôi, tôi khởi động Tomcat bằng tập lệnh startup.sh. Để biết liệu nó có đang chạy hay không, tôi sử dụng

ps -ef | grep tomcat  

Nếu kết quả đầu ra chứa toàn bộ đường dẫn đến thư mục tomcat của tôi, thì nó đang chạy


68

hãy thử điều này thay thế và vì nó cần đặc quyền root, hãy sử dụng sudo

sudo service tomcat7 status

17
Điều gì sẽ xảy ra nếu Tomcat không phải là một dịch vụ? Thay vào đó là một gói.
emeraldhieu

1
@ Emerald214 trong trường hợp đó bạn sẽ nhận đượctomcat7: unrecognized service
Yar

@Yar, nó phụ thuộc vào phiên bản tomcat của bạn
tmh

14

netstat -lnp | grep 8080có lẽ sẽ là cách tốt nhất, nếu bạn biết cổng lắng nghe của Tomcat. Nếu bạn muốn chắc chắn rằng nó hoạt động, bạn sẽ phải thiết lập kết nối và gửi một yêu cầu HTTP và nhận được phản hồi. Bạn có thể thực hiện việc này theo chương trình hoặc sử dụng bất kỳ trình duyệt web nào.


NẾU bạn biết cổng, tôi nghĩ rằng đây là cách đơn giản nhất cho rằng có những khác biệt trong cách bạn kiểm tra nếu thực thi được chạy tùy thuộc vào cách bạn cài đặt Tomcat, cho dù một dịch vụ của mình hay không, vv
Jaffer

9

Bạn có thể kiểm tra trạng thái của tomcat bằng các cách sau:

ps -ef | grep tomcat  

Thao tác này sẽ trả về đường dẫn tomcat nếu tomcat đang chạy

netstat -a | grep 8080

nơi 8080 là cổng tomcat


7

Nếu tomcat được cài đặt cục bộ, hãy nhập url sau vào cửa sổ trình duyệt: {localhost: 8080}

Điều này sẽ hiển thị trang chủ Tomcat với thông báo sau.

Nếu bạn thấy thông báo này, bạn đã cài đặt thành công Tomcat. Xin chúc mừng!

Nếu tomcat được cài đặt trên một máy chủ riêng biệt, bạn có thể gõ Replace localhost bằng tên máy chủ hợp lệ hoặc Iess nơi tomcat được cài đặt.

Ở trên áp dụng cho cài đặt tiêu chuẩn, trong đó tomcat sử dụng cổng mặc định 8080


19
Nếu Tomcat được cài đặt trên một máy chủ riêng biệt, việc không truy cập được từ trình duyệt sẽ không cho bạn biết chắc chắn liệu nó có đang chạy hay không: có thể không truy cập được.
Marco Lackovic

Tôi đã cài đặt Tomcat8 trên Ubuntu, nhưng truy cập localhost: 8080, kết quả là thông báo "Không thể kết nối".
ibodi

1
Nếu bạn có một máy chủ không đầu trên Linux thì đây không phải là một tùy chọn.
Klaus Nji

5

wget urlhoặc curl url nơi url là một url của máy chủ tomcat rằng nên có sẵn, ví dụ: wget http://localhost:8080. Sau đó kiểm tra mã thoát, nếu nó là 0 - tomcat đã lên.


4

Tạo một tập lệnh Shell để kiểm tra xem tomcat đang lên hay xuống và đặt cron cho sh để làm cho nó kiểm tra vài phút một lần và tự động khởi động tomcat nếu bị hỏng. Đoạn mã mẫu bên dưới

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

Tôi đã tạo một tập lệnh shell luôn trả về "TOMCAT RUNNING" ngay cả khi tôi đã dừng tomcat. Nhưng khi tôi chạy lệnh trên bảng điều khiển, nó hoạt động tốt.
Charles PHAM

Đảm bảo rằng tên tập lệnh shell đó không phải là từ khóa tomcat. Nếu tập lệnh có tên tomcat, thì trong danh sách tiến trình tên tập lệnh shell sẽ hiển thị, mã sẽ nghĩ như thể tomcat đang chạy. Bạn có thể đặt bất kỳ tên nào cho script mà không có từ khóa tomcat trong đó
Devendra Dora

3

Tôi thấy Tomcat khá lắt léo ở chỗ một tiến trình đang chạy hoặc một cổng mở không nhất thiết có nghĩa là nó thực sự xử lý các yêu cầu. Tôi thường cố gắng lấy một trang đã biết và so sánh nội dung của nó với giá trị dự kiến ​​được tính toán trước.


3

tôi luôn luôn làm

tail -f logs/catalina.out

Khi tôi thấy ở đó

INFO: Server startup in 77037 ms

thì tôi biết máy chủ đã hoạt động.


2

Bạn đang cố gắng thiết lập một hệ thống cảnh báo? Đối với một "nhịp tim" đơn giản, hãy thực hiện một yêu cầu HTTP tới cổng Tomcat.

Để theo dõi phức tạp hơn, bạn có thể thiết lập JMX và / hoặc SNMP để xem thống kê JVM. Chúng tôi chạy Nagios với plugin SNMP (cầu nối với JMX) để kiểm tra mức sử dụng bộ nhớ Tomcat và yêu cầu kích thước nhóm luồng sau mỗi 10-15 phút.

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

Cập nhật (2012):

Chúng tôi đã nâng cấp hệ thống của mình để sử dụng "" giám sát "để kiểm tra quá trình tomcat. Tôi thực sự thích nó. Với rất ít cấu hình, nó sẽ tự động xác minh dịch vụ đang chạy và tự động khởi động lại nếu không. (gửi thông báo qua email). Nó có thể tích hợp với các tập lệnh /etc/init.d hoặc kiểm tra theo tên tiến trình.


1

Vì các phiên bản tomcat của tôi được đặt tên là tomcat_. Ví dụ. tomcat_8086, tôi sử dụng

#

ps aux | grep tomcat

Phương pháp khác là sử dụng tiện ích nc

nc -l 8086 (số cổng)

Hoặc là

ps aux | grep java


1

Hãy thử lệnh này

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

Nó sẽ trả về pid nếu tomcat đang chạy.


0
$ sudo netstat -lpn |grep :8080

Để kiểm tra số cổng

$ ps -aef|grep tomcat

Có bất kỳ tomcat nào đang chạy dưới máy chủ không.

tsssinfotech-K53U infotech # ps -aef|grep tomcat

root 9586 9567 0 11:35 pts / 6 00:00:00 grep --colour = auto tomcat


0

Về cơ bản bạn muốn kiểm tra

  1. Kết nối với phiên bản tomcat của bạn
  2. Thu thập một số thống kê cơ bản
  3. Quá trình unix có đang chạy hay không

Tôi sẽ đánh giá 2 lựa chọn đầu tiên vì lựa chọn thứ 3 đã được trả lời đầy đủ.

đơn giản nhất là chỉ cần phát triển một trang web trên WebApp của bạn tập hợp một số chỉ số cơ bản và có một ứng dụng khách có thể đọc kết quả hoặc phát hiện các vấn đề kết nối.

Để làm như vậy, bạn có một số vấn đề


0

Đây là hai xu của tôi.

Tôi có nhiều phiên bản tomcat đang chạy trên các cổng khác nhau để thiết lập cụm của mình. Tôi sử dụng lệnh sau để kiểm tra từng quy trình đang chạy trên các cổng khác nhau.

/sbin/fuser 8080/tcp

Thay thế số cổng theo nhu cầu của bạn.

Và để giết quá trình sử dụng -ktrong lệnh trên.

  • Điều này nhanh hơn nhiều so với ps -efcách hoặc bất kỳ lệnh nào khác mà bạn gọi một lệnh và gọi một lệnh khácgrep ở trên nó.
  • Hoạt động tốt với nhiều bản cài đặt của tomcat, Hoặc bất kỳ máy chủ nào khác sử dụng một cổng thực tế là chạy trên cùng một máy chủ.

Lệnh tương đương trên BSDhệ điều hành làfstat


0

tomcat.sh giúp bạn biết điều này một cách dễ dàng.

tài liệu sử dụng tomcat.sh cho biết:

không đối số: hiển thị process-id của tomcat, nếu nó đang chạy, nếu không thì không làm gì

Vì vậy, hãy chạy lệnh trên dấu nhắc lệnh của bạn và kiểm tra pid:

$ tomcat.sh

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.