# 先等待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}