腳本檢測Kafka和Zookeeper

  Java測試環境中Kafka最近老是自動中止,全部寫了一個簡單的腳原本監聽Kafka和Zookeeper,其中Kafka監聽端口爲9092,Zookeeper監聽端口爲2181,腳本以下:shell

#!/bin/bash #read -p "input port:" port export JAVA_HOME=/export/servers/jdk1.8.0_172 monitor=$(ss -lntup|grep 9092) monitorzoo=$(ss -lntip|grep 2181) if [ "$monitorzoo" ];then
        echo "up $(date +%F-%H:%M)" >> /test/monitorzoo-up.log else
        echo "down $(date +%F-%H:%M)" >> /test/monitorzoo-down.log && /export/servers/zookeeper-3.4.12/bin/zkServer.sh start fi
if [ "$monitor" ];then
        echo "up $(date +%F-%H:%M)" >> /test/monitor-up.log else
        echo "down $(date +%F-%H:%M)" >> /test/monitor-down.log && /export/servers/kafka_2.11-1.1.0/bin/kafka-server-start.sh /export/servers/kafka_2.11-1.1.0/config/server.properties 1>/dev/null 2>&1 &
        #if [ $? ];then # echo "kafka start ok $(date +%F-%H:%M)" >> /test/monitor-down.log #else # echo "kafka start faild $(date +%F-%H:%M)" >> /test/monitor-down.log #fi
fi

  這裏有個坑,我是想在定時任務中定時的監控兩個端口的運行狀態,若端口正常監聽則輸出日誌,若不正常則啓動服務。手動運行腳本時,不須要加JAVA的環境變量,由於當前shell已定義了JAVA的環境變量(在/etc/profile中),在手動執行腳本時默認已經定義好了JAVA的環境。而在定時任務中運行腳本時會新啓動shell並未定義JAVA的環境變量,因此腳本中必定要定義JAVA的環境變量,否則會啓動失敗,由於Kafka和Zookeeper都是依賴於JAVA環境的。bash

相關文章
相關標籤/搜索