2012-01-06 9 views
9

Tôi có một tập lệnh bên dưới mà tôi muốn phản hồi "jboss không chạy" hoặc "jboss đang chạy" tùy thuộc vào việc nó có thể tìm thấy quy trình jboss trong danh sách quy trình hay không. Tuy nhiên, khi tôi tắt Jboss nó vẫn thực hiện điều kiện khác và nói "jboss đang chạy". Nếu tôi tự làm "pgrep -f jboss" nó không trả lại bất cứ điều gì, vậy tại sao nó vẫn đi vào điều kiện Khác? bối rốiCách kiểm tra xem JBoss có đang chạy trên máy chủ Unix không?

#!/bin/bash 
if [ -z "$(pgrep -f jboss)" ] 
    then 
    echo "jboss is not running" 
else 
    echo "jboss is running" 
fi 

Cảm ơn sự giúp đỡ của bạn!

Trả lời

0

Run JPS, grep nó cho phù hợp với bạn JBoss, cắt các PID từ dòng và kiểm tra PID.

3

Hãy thử sử dụng exit status của lệnh -

#!/bin/bash 

pgrep -f jboss &> /dev/null 
if [ $? -eq 0 ] 
    then 
    echo "jboss is running" 
else 
    echo "jboss is not running" 
fi 
12

Thay vì kiểm tra đầu ra, chỉ cần sử dụng lệnh:

if pgrep -f jboss >/dev/null 
    then 
    echo "jboss is running" 
else 
    echo "jboss is not running" 
fi 
-2

Bạn không thể kiểm tra JBoss theo cách đó. Bởi vì Jboss bắt đầu đôi khi đăng nhập thời gian như 1-2 phút. Vì vậy, kịch bản của bạn chỉ hiển thị quá trình Jboss, không phải là "Jboss thực sự là UP" (tôi có nghĩa là ứng dụng trên JBoss).

+0

Bạn chưa trả lời câu hỏi của anh; bạn chỉ giải thích tại sao kiểm tra của anh ta không đủ tốt để theo dõi jboss. – itsbruce

1
#! /bin/bash 
if [ -z "$(ps -ef | grep org.jboss.Main)" ] 
then 
echo "jboss is not running" 
else 
    echo "jboss is running" 
fi 
1

Đây là cách tốt nhất:

if [ -z "$(ps -ef | grep java | grep jboss)" ] 
then 
echo "JBoss is NOT running" 
else 
    echo "JBoss is running" 
fi 
2

Get quá trình ID JBoss 7/EAP 6:

pgrep -f org.jboss.as 

Vì vậy, nếu bạn muốn nâng cao các cựu kịch bản ví dụ với này:

if [ -z "$(pgrep -f org.jboss.as)" ] 
then 
echo "JBoss is NOT running" 
else 
    echo "JBoss is running" 
fi 
0

Cách tốt nhất là sử dụng này

result=`$jboss/bin/jboss-cli.sh --connect controller=localhost:$controller_port --commands=\"read-attribute server-state\" > out 2&1` 
echo "$result" | grep -q "running" 
if [ $? -eq 0 ];then 
    echo "Jboss running" 
fi 

Nếu bạn muốn kiểm tra xem tai hoặc tập tin chiến tranh được triển khai sau đó bạn có thể sử dụng lệnh sau

$JBOSS_HOME/bin/jboss\-cli.sh --connect controller=localhost:$PORT --command="deployment-info --name=$YOUR_WAR_OR_EAR_FILE"