zoukankan      html  css  js  c++  java
  • 针对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 ????? 33[0m 所包裹的文字将显示绿底白字
        echo -e "33[42;37m Start ${FID} Successfully! 33[0m"
        echo "Start ${FID} Successfully!" >> ${FWlog_dir}
        ps -ef | grep java | grep $FID >> ${FWlog_dir}
    else
        # 如果上面命令运行失败,也即对应的程式未启动好了则执行下面的命令
        # 这里的echo -e是输出带格式的字符串。33[41;37m ????? 33[0m 所包裹的文字将显示红底白字
        echo -e "33[41;37m Start ${FID} Failured! 33[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 ????? 33[0m 所包裹的文字将显示红底白字
        echo -e "33[41;37m Stop ${FID} Failured! 33[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 "33[41;37m Force Stop ${FID} Still Failured!You need to check manually.33[0m"
    		    echo "Force Stop ${FID} Failured!" >> ${FWlog_dir}
    		    ps -ef | grep java | grep $FID >> ${FWlog_dir}
    		else
    		    # 这里的echo -e是输出带格式的字符串。33[42;37m ????? 33[0m 所包裹的文字将显示绿底白字
    		    echo -e "33[42;37m Force Stop ${FID} Successfully! 33[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 "33[41;37m Force Stop ${FID} Still Failured!You need to check manually.33[0m"
    				    echo "Force Stop ${FID} Failured!" >> ${FWlog_dir}
    				    ps -ef | grep java | grep $FID >> ${FWlog_dir}
    				else
    				    echo -e "33[42;37m Force Stop ${FID} Successfully! 33[0m"
    				    echo "Force Stop ${FID} Successfully!" >> ${FWlog_dir}
    				fi
    				;;
    			[nN][oO]|[nN])
    				echo -e "33[41;37m You Need To Check manually!33[0m "
    				echo "Not Choose Force Stop!" >> ${FWlog_dir}
    				;;
    
    		    *)
    				echo "Invalid input..."
    				;;
    		esac
        fi
    
    else
    
        echo -e "33[42;37m Stop ${FID} Successfully! 33[0m"
        echo "Stop ${FID} Successfully!" >> ${FWlog_dir}
    
    fi
    echo "============================" >> ${FWlog_dir}
    
  • 相关阅读:
    python
    python 随机数生成
    PowerShell学习笔记二_变量、Select、Foreach、where
    PowerShell学习笔记一_cmdlet、管道、如何入门
    vscode 配置
    mvn 命令
    Microsoft 365:如何在Word文件中插入另一个不同文档内容或者链接
    Microsoft 365:如何使用Tag来管理在Teams中提到的组
    Microsoft 365:Microsoft Teams 实时字幕助力您打破语言沟通障碍
    2020年SharePoint Saturday _ China, 精彩回顾
  • 原文地址:https://www.cnblogs.com/heicaijun/p/12784671.html
Copyright © 2011-2022 走看看