• Linux 启动、停止、重启jar包脚本;查看java进程执行文件所在目录/具体位置(多文件夹同名jar包)


    文件名称

    startOrStropJar.sh

    脚本

    #!/bin/bash
    
    
    #这里可替换为你自己的执行程序,其他代码无需更改
    
    APP_NAME=xxxxxx.jar
    #使用说明,用来提示输入参数
    usage() {
        echo "Usage: sh startOrStropJar.sh [start|stop|restart|status]"
        exit 1
    }
    
    #检查程序是否在运行
    is_exist(){
      pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'`
      #如果不存在返回1,存在返回0     
      if [ -z "${pid}" ]; then
       return 1
      else
        return 0
      fi
    }
    
    #启动方法
    start(){
      is_exist
      if [ $? -eq 0 ]; then
        echo "${APP_NAME} is already running. pid=${pid}"
      else
        rm nohup.out
        nohup java -jar ${APP_NAME}  --spring.profiles.active=[dev/test/prod] 2>&1 &
      fi
    }
    
    #停止方法
    stop(){
      is_exist
      if [ $? -eq "0" ]; then
        kill -9 $pid
      else
        echo "${APP_NAME} is not running"
      fi  
    }
    
    #输出运行状态
    status(){
      is_exist
      if [ $? -eq "0" ]; then
        echo "${APP_NAME} is running. Pid is ${pid}"
      else
        echo "${APP_NAME} is NOT running."
      fi
    }
    
    #重启
    restart(){
      stop
      sleep 5
      start
    }
    
    #根据输入参数,选择执行对应方法,不输入则执行使用说明
    case "$1" in
      "start")
        start
        ;;
      "stop")
        stop
        ;;
      "status")
        status
        ;;
      "restart")
        restart
        ;;
      *)
        usage
        ;;
    esac

     * 红色部分

    --spring.profiles.active=[dev/test/prod] 需要指定为项目自身配置 如:--spring.profiles.active=mytest
    # 启动/停止/重启
    sh startOrStropJar.sh start/stop/restart

    备注:

    war包需要部署到容器中,运行jar包主要有以下四种方式。

    一、java -jar XXX.jar

    这是最基本的jar包执行方式,但是当我们用ctrl+c中断或者关闭窗口时,程序也会中断执行。

    二、java -jar XXX.jar &

    &代表在后台运行,使用ctrl+c不会中断程序的运行,但是关闭窗口会中断程序的运行。

    三、nohup java -jar XXX.jar &

    使用这种方式运行的程序日志会输出到当前目录下的nohup.out文件,使用ctrl+c中断或者关闭窗口都不会中断程序的执行。

    四、nohup java -jar XXX.jar >test.log &

    日志输出到test.log文件。每次重启覆盖原有日志,追加日志 使用 >>test.log

    查看java进程执行文件所在目录/具体位置(多文件夹同名jar包)

     方法1.找出PID去/proc文件夹找对应PID的exe、cwd目录位置

    查看java进程执行文件所在目录/具体位置(多文件夹同名jar包)

    ps -ef | grep xxx 找出进程ID

    Linux 在启动一个进程的时候,系统会在 /proc 下创建一个以 PID 命名的进程信息的文件夹。

    查看方式:ll /proc/PID 或 ls -l /proc/PID

    cwd 符号链接的是进程运行目录;

    exe 符号链接的是执行程序的绝对路径;

    cmdline:程序运行时输入的命令

    方法2.使用fuser

    首先要进入部署服务的目录,然后可以使用fuser找出进程。

    如: fuser none.jar

    若启动的是该目录下文件,则会列出详细目录

    结果:/home/xxx/none.jar :    1234m(PID)

    fuser

    使用文件或文件结构识别进程

    补充说明

    fuser命令 用于报告进程使用的文件和网络套接字。fuser命令列出了本地进程的进程号,那些本地进程使用file,参数指定的本地或远程文件。对于阻塞特别设备,此命令列出了使用该设备上任何文件的进程。

    每个进程号后面都跟随一个字母,该字母指示进程如何使用文件。

    • c:指示进程的工作目录。
    • e:指示该文件为进程的可执行文件(即进程由该文件拉起)。
    • f:指示该文件被进程打开,默认情况下f字符不显示。
    • F:指示该文件被进程打开进行写入,默认情况下F字符不显示。
    • r:指示该目录为进程的根目录。
    • m:指示进程使用该文件进行内存映射,抑或该文件为共享库文件,被进程映射进内存。

    语法

    fuser(选项)(参数)
    

    选项

    -a:显示命令行中指定的所有文件;
    -k:杀死访问指定文件的所有进程;
    -i:杀死进程前需要用户进行确认;
    -l:列出所有已知信号名;
    -m:指定一个被加载的文件系统或一个被加载的块设备;
    -n:选择不同的名称空间;
    -u:在每个进程后显示所属的用户名。
    

    参数

    文件:可以是文件名或者TCP、UDP端口号。

    实例

    要列出使用/etc/passwd文件的本地进程的进程号,请输入:

    fuser /etc/passwd
    

    要列出使用/etc/filesystems文件的进程的进程号和用户登录名,请输入:

    fuser -u /etc/filesystems
  • 相关阅读:
    布局及视图(三)
    笔试中的编程题2
    布局及视图(四)
    SoftReference,WeakReference&WeakHashMap
    Android自用 监测网络是否可用
    Android自用 加载png图片时出错!
    Android访问权限大全
    笔试中的编程题3
    如何全面的把握一个系统的异常处理
    从程序的控制逻辑看线程的三种应用模式
  • 原文地址:https://www.cnblogs.com/foolash/p/13824647.html
Copyright © 2020-2023  润新知