使用該教程,能直觀地看到java啟動腳本是否啟動/關閉成功 能讓自己的啟動時間日期都記錄在Log中 能記錄有哪些人登陸了該伺服器操作了啟動關閉腳本(記錄IP地址) ...
簡介與優點
使用該教程,能直觀地看到java啟動腳本是否啟動/關閉成功
能讓自己的啟動時間日期都記錄在Log中
能記錄有哪些人登陸了該伺服器操作了啟動關閉腳本(記錄IP地址)
使用說明
在原有的啟動和關閉腳本底下分別加入以下代碼
# 在啟動腳本末尾添加這個
source /home/root/start4Log.sh
# 在關閉腳本末尾添加這個
source /home/root/stop4Log.sh
start4Log.sh腳本
下載地址在start4Log腳本中,可以直觀看到程式是否啟動成功,並將啟動過程記錄在log日誌中
# Log記錄路徑
FWlog_dir=/home/p4fdc/PeakPerformance/FWlog/FWHistory.log
echo "============================" >> ${FWlog_dir}
echo "[start${FID}.sh]" >> ${FWlog_dir}
date -d "today" +"%Y-%m-%d-%H-%M-%S" >> ${FWlog_dir}
# 輸出當前伺服器已登錄的用戶與IP到Log中
who >> ${FWlog_dir}
ps -ef | grep java | grep $FID
# 這裡是對對應的$FID java程式判斷,查詢是否存在這樣的FID的java程式
if [ $? -eq 0 ] ;then
# 如果上面命令運行成功,也即對應的程式啟動好了則執行下麵的命令
# 這裡的echo -e是輸出帶格式的字元串。\33[42;37m ????? \033[0m 所包裹的文字將顯示綠底白字
echo -e "\033[42;37m Start ${FID} Successfully! \033[0m"
echo "Start ${FID} Successfully!" >> ${FWlog_dir}
ps -ef | grep java | grep $FID >> ${FWlog_dir}
else
# 如果上面命令運行失敗,也即對應的程式未啟動好了則執行下麵的命令
# 這裡的echo -e是輸出帶格式的字元串。\33[41;37m ????? \033[0m 所包裹的文字將顯示紅底白字
echo -e "\033[41;37m Start ${FID} Failured! \033[0m"
echo "Start ${FID} Failured!" >> ${FWlog_dir}
fi
echo "============================" >> ${FWlog_dir}
stop4Log.sh
下載地址在stop腳本中可以進行傳參,諸如傳遞一個-f的參數使用 ./stopTestJava.sh -f,則在無法kill的時候使用kill -9強制kill。以下為具體代碼
# 先等待2s,然後再判斷該Java程式是否成功關閉(因為關閉有時延)
sleep 2
FWlog_dir=/home/p4fdc/PeakPerformance/FWlog/FWHistory.log
echo "============================" >> ${FWlog_dir}
echo "[stop$FID.sh] : " >> ${FWlog_dir}
date -d "today" +"%Y-%m-%d-%H-%M-%S" >> ${FWlog_dir}
# 輸出當前伺服器已登錄的用戶與IP到Log中
who >> ${FWlog_dir}
ps -ef | grep java | grep $FID
if [ $? -eq 0 ] ;then
# 如果上面命令運行成功,也即對應的程式關閉了則執行下麵的命令
# 這裡的echo -e是輸出帶格式的字元串。\33[41;37m ????? \033[0m 所包裹的文字將顯示紅底白字
echo -e "\033[41;37m Stop ${FID} Failured! \033[0m"
echo "Stop ${FID} Failured!" >> ${FWlog_dir}
ps -ef | grep java | grep $FID >> ${FWlog_dir}
# 判斷是否被傳參
if [[ -n "$1" ]]; then
# 如果含有第一個參數則直接強制kill
ps -ef | grep java | grep $FID | grep java | kill -9 `awk '{print $2}'`
ps -ef | grep java | grep $FID
if [ $? -eq 0 ] ;then
echo -e "\033[41;37m Force Stop ${FID} Still Failured!You need to check manually.\033[0m"
echo "Force Stop ${FID} Failured!" >> ${FWlog_dir}
ps -ef | grep java | grep $FID >> ${FWlog_dir}
else
# 這裡的echo -e是輸出帶格式的字元串。\33[42;37m ????? \033[0m 所包裹的文字將顯示綠底白字
echo -e "\033[42;37m Force Stop ${FID} Successfully! \033[0m"
echo "Force Stop ${FID} Successfully!" >> ${FWlog_dir}
fi
else
# 如果沒有第一個參數則詢問用戶是否強制刪除
read -p "Want to Force Kill the process?[y/n]" choice
case $choice in
[yY][eE][sS]|[yY])
ps -ef | grep java | grep $FID | grep java | kill -9 `awk '{print $2}'`
ps -ef | grep java | grep $FID
if [ $? -eq 0 ] ;then
echo -e "\033[41;37m Force Stop ${FID} Still Failured!You need to check manually.\033[0m"
echo "Force Stop ${FID} Failured!" >> ${FWlog_dir}
ps -ef | grep java | grep $FID >> ${FWlog_dir}
else
echo -e "\033[42;37m Force Stop ${FID} Successfully! \033[0m"
echo "Force Stop ${FID} Successfully!" >> ${FWlog_dir}
fi
;;
[nN][oO]|[nN])
echo -e "\033[41;37m You Need To Check manually!\033[0m "
echo "Not Choose Force Stop!" >> ${FWlog_dir}
;;
*)
echo "Invalid input..."
;;
esac
fi
else
echo -e "\033[42;37m Stop ${FID} Successfully! \033[0m"
echo "Stop ${FID} Successfully!" >> ${FWlog_dir}
fi
echo "============================" >> ${FWlog_dir}