针对Linux上Java程式运行脚本的Log信息记录操作人员记录以及成功运行判断

简介与优点

使用该教程,能直观地看到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}
posted @ 2020-04-27 10:31  黑菜菌  阅读(458)  评论(0编辑  收藏  举报