欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

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

程序员文章站 2022-10-19 10:41:54
使用该教程,能直观地看到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}
原文链接:https://www.cnblogs.com/heicaijun/p/12784671.html