Apakah Tomcat berjalan?

109

Tertarik untuk mengetahui bagaimana orang biasanya memeriksa untuk melihat apakah Tomcat berjalan di lingkungan Unix.

Saya juga memeriksa bahwa proses sedang berjalan menggunakan

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

atau saya memeriksa apakah nomor port aktif

netstat -a | grep 8080

apakah ada cara yang lebih baik untuk memeriksa bahwa Tomcat sedang berjalan? Di atas tampaknya menjadi cara 'hacky' untuk memeriksa bahwa Tomcat sedang berjalan.

ziggy
sumber

Jawaban:

57

Mengapa grep ps, ketika pid telah ditulis ke $CATALINA_PIDfile?

Saya memiliki cronskrip pemeriksa yang mengirimkan email saat kucing jantan mati:

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

Saya kira Anda juga bisa menggunakan wgetuntuk memeriksa kesehatan kucing jantan Anda. Jika Anda memiliki halaman diagnostik dengan pemuatan pengguna dll, Anda dapat mengambilnya secara berkala dan menguraikannya untuk menentukan apakah ada yang salah.

dogbane
sumber
apakah ini mudah dilakukan dengan windows? apakah saya hanya akan memodifikasi perintah untuk windows yang setara, membuangnya dalam file batch, dan kemudian menjadwalkan melalui scheduler?
liltitus
Anda dapat melakukan sesuatu di sepanjang baris tasklist |find /I "Tomcat" || echo "Tomcat not running"dalam file bat, tetapi Anda mungkin perlu menemukan java, bukan Tomcat tergantung pada apa nama prosesnya.
GL2014
1
Untuk mempelajari nilai $ CATALINA_PID dari Tomcat yang diinstal OS Anda, coba: ps aewwx | grep CATALINA_PID dan Anda akan menemukannya di keluaran untuk proses yang sedang berjalan, di antara variabel lingkungan lainnya. Di Debian 8, nilainya adalah: CATALINA_PID = / var / run / tomcat8.pid
Profesor Falken
2
Penting untuk dicatat bahwa file pid mungkin tidak ada, itu tergantung pada lingkungan dan bagaimana tomcat dimulai. Lihat jawaban ini untuk membuat file pid saat startup.
Alberto de Paola
92

Di sistem linux saya, saya memulai Tomcat dengan skrip startup.sh. Untuk mengetahui apakah itu berjalan atau tidak, saya gunakan

ps -ef | grep tomcat  

Jika hasil keluaran berisi seluruh jalur ke folder kucing jantan saya, maka itu berjalan

Thai Tran
sumber
68

coba ini sebagai gantinya dan karena memerlukan hak akses root gunakan sudo

sudo service tomcat7 status
Kemboi
sumber
17
Bagaimana jika Tomcat bukan layanan? Melainkan sebuah paket.
emeraldhieu
1
@ Emerald214 dalam hal ini Anda akan mendapatkantomcat7: unrecognized service
Yar
@Yar, itu tergantung pada versi kucing jantan Anda
tmh
14

netstat -lnp | grep 8080mungkin akan menjadi cara terbaik, jika Anda tahu port mendengarkan Tomcat. Jika Anda ingin memastikan bahwa itu berfungsi, Anda harus membuat koneksi dan mengirim permintaan HTTP dan mendapatkan respons. Anda dapat melakukan ini secara terprogram, atau menggunakan browser web apa pun.

Michael Goldshteyn
sumber
JIKA Anda tahu portnya, saya pikir ini adalah cara paling sederhana mengingat ada variasi dalam cara Anda memeriksa apakah eksekusi dapat dijalankan tergantung pada cara Anda menginstal Tomcat, apakah itu layanan atau tidak, dll.
Jaffer
9

Anda dapat memeriksa status tomcat dengan cara berikut:

ps -ef | grep tomcat  

Ini akan mengembalikan jalur kucing jantan jika kucing jantan itu berjalan

netstat -a | grep 8080

dimana 8080 adalah port tomcat

Dhanish Jose
sumber
7

Jika tomcat diinstal secara lokal, ketik url berikut di jendela browser: {localhost: 8080}

Ini akan menampilkan halaman beranda Tomcat dengan pesan berikut.

Jika Anda melihat ini, Anda telah berhasil menginstal Tomcat. Selamat!

Jika tomcat diinstal pada server terpisah, Anda dapat mengetik replace localhost dengan nama host yang valid atau Iess di mana tomcat diinstal.

Hal di atas berlaku untuk instalasi standar dimana tomcat menggunakan port default 8080

Lokanath
sumber
19
Jika Tomcat diinstal pada server terpisah, gagal mengaksesnya dari browser tidak akan memberi tahu Anda dengan pasti apakah itu berjalan atau tidak: mungkin tidak dapat dijangkau.
Marco Lackovic
Saya telah menginstal Tomcat8 di Ubuntu, tetapi pergi ke localhost: 8080 menghasilkan pesan "Tidak dapat terhubung".
ibodi
1
Jika Anda memiliki server tanpa kepala di Linux, ini bukanlah pilihan.
Klaus Nji
5

wget urlatau curl url di mana url adalah url dari server tomcat yang harus tersedia, misalnya: wget http://localhost:8080. Kemudian periksa kode keluar, jika 0 - kucing jantan sudah habis.

Dikla
sumber
4

Buat skrip Shell yang memeriksa apakah tomcat naik atau turun dan setel cron untuk sh agar diperiksa setiap beberapa menit, dan mulai otomatis kucing jantan jika turun. Contoh Snippet kode di bawah ini

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
Devendra Dora
sumber
Saya membuat skrip shell yang selalu mengembalikan "TOMCAT RUNNING" bahkan saya menghentikan tomcat. Tetapi ketika saya menjalankan perintah di konsol, itu berfungsi dengan baik.
Charles PHAM
Pastikan nama skrip shell tidak seperti kata kunci tomcat. Jika skrip memiliki nama kucing jantan, maka dalam daftar proses nama skrip shell akan muncul, kode akan berpikir seolah-olah kucing jantan berjalan. Anda dapat memberikan nama apa pun ke skrip tanpa kata kunci kucing jantan di dalamnya
Devendra Dora
3

Saya telah menemukan Tomcat menjadi agak rewel dalam proses yang sedang berjalan atau port terbuka tidak berarti itu benar-benar menangani permintaan. Saya biasanya mencoba untuk mengambil halaman yang dikenal dan membandingkan isinya dengan nilai yang diharapkan sebelumnya.

Alex Howansky
sumber
3

aku selalu melakukan

tail -f logs/catalina.out

Ketika saya melihat di sana

INFO: Server startup in 77037 ms

maka saya tahu servernya habis.

konkit
sumber
2

Apakah Anda mencoba menyiapkan sistem peringatan? Untuk "detak jantung" sederhana, lakukan permintaan HTTP ke port Tomcat.

Untuk pemantauan yang lebih terperinci, Anda dapat mengatur JMX dan / atau SNMP untuk melihat statistik JVM. Kami menjalankan Nagios dengan plugin SNMP (menjembatani ke JMX) untuk memeriksa penggunaan memori Tomcat dan meminta ukuran kumpulan utas setiap 10-15 menit.

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

Pembaruan (2012):

Kami telah meningkatkan sistem kami untuk menggunakan "monit" untuk memeriksa proses kucing jantan. Aku benar-benar menyukainya. Dengan konfigurasi yang sangat sedikit, secara otomatis memverifikasi layanan sedang berjalan, dan secara otomatis restart jika tidak berjalan. (mengirim peringatan email). Itu dapat berintegrasi dengan skrip /etc/init.d atau memeriksa dengan nama proses.

Will Glass
sumber
1

Sejak kejadian tomcat saya dinamai sebagai tomcat_. Sebagai contoh. tomcat_8086, saya gunakan

#

ps aux | grep tomcat

Metode lain menggunakan utilitas nc

nc -l 8086 (nomor port)

Atau

ps aux | grep java

Himanshu Chauhan
sumber
1

Coba perintah ini

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

Ini akan mengembalikan pid jika tomcat sedang berjalan.

Alin
sumber
0
$ sudo netstat -lpn |grep :8080

Untuk memeriksa nomor port

$ ps -aef|grep tomcat

Apakah ada kucing jantan yang berjalan di bawah server.

tsssinfotech-K53U infotech # ps -aef|grep tomcat

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

Batchu Bhargava
sumber
0

Pada dasarnya Anda ingin menguji

  1. Konektivitas ke instance tomcat Anda
  2. Kumpulkan beberapa statistik dasar
  3. Apakah proses unix sedang berjalan

Saya akan mengevaluasi 2 opsi pertama karena yang ketiga sudah dijawab dengan cukup.

termudah adalah hanya mengembangkan halaman web di WebApp Anda yang mengumpulkan beberapa metrik dasar, dan memiliki klien yang dapat membaca hasil atau mendeteksi masalah konektivitas.

Untuk melakukannya, Anda mengalami beberapa masalah

YoYo
sumber
0

Ini dua sen saya.

Saya memiliki beberapa instance tomcat yang berjalan di port yang berbeda untuk penyiapan cluster saya. Saya menggunakan perintah berikut untuk memeriksa setiap proses yang berjalan pada port yang berbeda.

/sbin/fuser 8080/tcp

Ganti nomor port sesuai kebutuhan Anda.

Dan untuk mematikan proses, gunakan -kperintah di atas.

  • Ini jauh lebih cepat daripada ps -efcara atau perintah lain di mana Anda memanggil perintah dan memanggil perintah lain grepdi atasnya.
  • Bekerja dengan baik dengan beberapa instalasi tomcat, Atau server lain yang menggunakan port sebenarnya berjalan di server yang sama.

Perintah yang setara pada BSDsistem operasi adalahfstat

Raja Anbazhagan
sumber
0

tomcat.sh membantu Anda mengetahui hal ini dengan mudah.

doc penggunaan tomcat.sh mengatakan:

tanpa argumen: tampilkan id proses tomcat, jika sedang berjalan, jika tidak, jangan lakukan apa pun

Jadi, jalankan perintah pada command prompt Anda dan periksa pid:

$ tomcat.sh

Techflash
sumber