Tomcat กำลังทำงานอยู่หรือไม่?


109

สนใจที่จะทราบว่าผู้คนมักตรวจสอบเพื่อดูว่า Tomcat ทำงานบนสภาพแวดล้อม Unix หรือไม่

ฉันตรวจสอบว่ากระบวนการกำลังทำงานโดยใช้

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

หรือตรวจสอบว่าหมายเลขพอร์ตทำงานอยู่

netstat -a | grep 8080

มีวิธีที่ดีกว่าในการตรวจสอบว่า Tomcat กำลังทำงานอยู่หรือไม่ ข้างต้นดูเหมือนจะเป็นวิธี 'แฮ็ก' ในการตรวจสอบว่า Tomcat กำลังทำงานอยู่

คำตอบ:


57

ทำไมgrep psเมื่อมีการเขียน pid ลงใน$CATALINA_PIDไฟล์?

ฉันมีcronสคริปต์ตัวตรวจสอบ 'd ซึ่งจะส่งอีเมลเมื่อแมวตัวผู้ไม่ทำงาน:

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? ฉันจะแก้ไขคำสั่งสำหรับ 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 เมื่อเริ่มต้น
Alberto de Paola

92

ในระบบ linux ของฉันฉันเริ่ม Tomcat ด้วยสคริปต์ startup.sh หากต้องการทราบว่ากำลังทำงานอยู่หรือไม่ฉันใช้

ps -ef | grep tomcat  

หากผลลัพธ์ผลลัพธ์มีเส้นทางทั้งหมดไปยังโฟลเดอร์ tomcat ของฉันแสดงว่ากำลังทำงานอยู่


68

ลองใช้สิ่งนี้แทนและเนื่องจากต้องการสิทธิ์รูทให้ใช้sudo

sudo service tomcat7 status

17
จะเกิดอะไรขึ้นถ้า Tomcat ไม่ใช่บริการ? แทนที่จะเป็นแพ็คเกจ
emeraldhieu

1
@ Emerald214 ในกรณีนี้คุณจะได้รับ atomcat7: unrecognized service
Yar

@Yar มันขึ้นอยู่กับเวอร์ชั่นแมวตัวผู้ของคุณ
tmh

14

netstat -lnp | grep 8080น่าจะเป็นวิธีที่ดีที่สุดถ้าคุณรู้จักพอร์ตการฟังของ Tomcat หากคุณต้องการแน่ใจว่าสามารถใช้งานได้คุณจะต้องสร้างการเชื่อมต่อและส่งคำขอ HTTP และรับคำตอบ คุณสามารถทำได้โดยใช้โปรแกรมหรือใช้เว็บเบราว์เซอร์ใดก็ได้


หากคุณรู้จักพอร์ตฉันคิดว่านี่เป็นวิธีที่ง่ายที่สุดเนื่องจากมีรูปแบบต่างๆในการตรวจสอบว่าไฟล์ปฏิบัติการทำงานอยู่หรือไม่ขึ้นอยู่กับวิธีที่คุณติดตั้ง Tomcat ไม่ว่าจะเป็นบริการหรือไม่เป็นต้น
Jaffer

9

คุณสามารถตรวจสอบสถานะของแมวตัวผู้ได้ด้วยวิธีต่อไปนี้:

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 บนเซิร์ฟเวอร์แยกต่างหากการไม่สามารถเข้าถึงได้จากเบราว์เซอร์จะไม่บอกให้คุณทราบว่ากำลังทำงานอยู่หรือไม่: อาจไม่สามารถเข้าถึงได้
Marco Lackovic

ฉันติดตั้ง Tomcat8 บน Ubuntu แล้ว แต่ไปที่localhost: 8080ส่งผลให้เกิดข้อความ "ไม่สามารถเชื่อมต่อ"
ibodi

1
หากคุณมีเซิร์ฟเวอร์ headless บน Linux นี่ไม่ใช่ตัวเลือก
Klaus Nji

5

wget urlหรือcurl url โดยที่ url เป็น url ของเซิร์ฟเวอร์ tomcat ที่ควรพร้อมใช้งานตัวอย่างเช่น: wget http://localhost:8080. จากนั้นตรวจสอบรหัสทางออกหากเป็น 0 - tomcat ขึ้น


5

สร้างเชลล์สคริปต์ที่ตรวจสอบว่า tomcat ขึ้นหรือลงและตั้งค่า cron สำหรับ sh เพื่อทำการตรวจสอบทุกๆสองสามนาทีและเริ่มต้นโดยอัตโนมัติหากไม่ทำงาน ตัวอย่างโค้ดด้านล่าง

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

ตรวจสอบให้แน่ใจว่าชื่อเชลล์สคริปต์ไม่ได้เป็นคีย์เวิร์ด tomcat หากสคริปต์มีชื่อ tomcat จากนั้นในรายการกระบวนการชื่อเชลล์สคริปต์จะปรากฏขึ้นโค้ดจะคิดว่าทอมแคทกำลังทำงานอยู่ คุณสามารถตั้งชื่อให้กับสคริปต์ใดก็ได้โดยไม่ต้องมีคำหลัก Tomcat
Devendra Dora

3

ฉันพบว่า Tomcat ค่อนข้างจู้จี้จุกจิกในกระบวนการทำงานหรือพอร์ตเปิดไม่ได้แปลว่าจะจัดการกับคำขอจริงๆ ฉันมักจะพยายามหาหน้าที่รู้จักและเปรียบเทียบเนื้อหากับค่าที่คาดการณ์ไว้ล่วงหน้า


3

ฉันทำอยู่เสมอ

tail -f logs/catalina.out

เมื่อฉันเห็นที่นั่น

INFO: Server startup in 77037 ms

จากนั้นฉันรู้ว่าเซิร์ฟเวอร์ทำงานแล้ว


2

คุณกำลังพยายามตั้งค่าระบบแจ้งเตือนหรือไม่? สำหรับ "heartbeat" แบบธรรมดาให้ส่งคำขอ HTTP ไปยังพอร์ต Tomcat

สำหรับการตรวจสอบที่ละเอียดยิ่งขึ้นคุณสามารถตั้งค่า JMX และ / หรือ SNMP เพื่อดูสถิติ JVM เรารัน Nagios ด้วยปลั๊กอิน SNMP (เชื่อมโยงไปยัง JMX) เพื่อตรวจสอบการใช้หน่วยความจำ Tomcat และขอขนาดเธรดพูลทุกๆ 10-15 นาที

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

ปรับปรุง (2012):

เราได้อัปเกรดระบบของเราให้ใช้ "มอนิเตอร์" เพื่อตรวจสอบกระบวนการ 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 ตัวเลือกแรกเนื่องจากตัวเลือกที่ 3 ได้รับคำตอบเพียงพอแล้ว

วิธีที่ง่ายที่สุดคือการพัฒนาหน้าเว็บบน WebApp ของคุณที่รวบรวมเมตริกพื้นฐานและมีไคลเอนต์ที่สามารถอ่านผลลัพธ์หรือตรวจจับปัญหาการเชื่อมต่อได้

สำหรับการดำเนินการดังกล่าวคุณมีปัญหาหลายประการ


0

นี่คือสองเซ็นต์ของฉัน

ฉันมีอินสแตนซ์ tomcat หลายตัวที่ทำงานบนพอร์ตต่างๆสำหรับการตั้งค่าคลัสเตอร์ของฉัน ฉันใช้คำสั่งต่อไปนี้เพื่อตรวจสอบแต่ละกระบวนการที่ทำงานบนพอร์ตต่างๆ

/sbin/fuser 8080/tcp

เปลี่ยนหมายเลขพอร์ตตามความต้องการของคุณ

และเพื่อฆ่ากระบวนการใช้-kในคำสั่งด้านบน

  • ซึ่งเร็วกว่าps -efวิธีการหรือคำสั่งอื่น ๆ ที่คุณเรียกคำสั่งและเรียกคำสั่งอื่นgrepอยู่ด้านบน
  • ทำงานได้ดีกับการติดตั้ง Tomcat หลาย ๆ เครื่องหรือเซิร์ฟเวอร์อื่น ๆ ที่ใช้พอร์ตตามความเป็นจริงที่ทำงานบนเซิร์ฟเวอร์เดียวกัน

คำสั่งที่เทียบเท่าบนBSDระบบปฏิบัติการคือfstat


0

tomcat.sh ช่วยให้คุณรู้เรื่องนี้ได้อย่างง่ายดาย

เอกสารการใช้งาน tomcat.sh พูดว่า:

ไม่มีอาร์กิวเมนต์: แสดงรหัสกระบวนการของแมวตัวผู้หากกำลังทำงานอยู่มิฉะนั้นไม่ต้องทำอะไรเลย

ดังนั้นเรียกใช้คำสั่งบนพรอมต์คำสั่งของคุณและตรวจสอบ pid:

$ tomcat.sh

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.