• 解决java -jar启动项目以及日志输出相关问题


    windows下启动、停止、重启jar项目

    后台启动

    @echo off
    START "app" javaw -jar app-0.0.1-SNAPSHOT.jar
    
    • 1
    • 2
    • 其中的app是你这个bat文件的名字
    • javaw是jre中的后台启动的文件在jre/bin下
    • 后面的jar文件是启动的jar包

    停止jar项目

    @echo off
    set port=3061
    for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do (
        echo kill the process %%m who use the port 
        taskkill /pid %%m -t -f
        goto q
    )
    :q
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    上述的方式是直接使用taskkill命令来关闭项目和linux中的kill一样

    重启项目

    @echo off
    set port=3061
    for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do (
        echo kill the process %%m who use the port 
        taskkill /pid %%m -t -f
        goto start
    )
    :start
    
    START "app" javaw -jar app-0.0.1-SNAPSHOT.jar
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    重启的方式就是将程序先关闭,然后重新启动。

    Linux下关于启动服务器日志相关操作

    java -jar xxx.jar
    
    • 1

    这种方式是在linux下的窗口启动,关闭窗口就相当于关闭了服务器。

    服务器后台启动

    nohup java -jar xxx.jar &
    
    • 1

    这样就会将程序运行到了后台,但是没有特指定日志输出的位置和日志名字,因此日志默认在当前目录的nohup.out下。

    后台启动且指定日志位置

    日志输出的方式需要知道如下:

    • 1 标准输出
    • 2 错误输出
    • /dev/null 没有输出

    因此有如下两种方式

    nohup java -jar xxx.jar > /dev/null &
    
    • 1

    日志重定向到/dev/null中,这这个目录是linux的空设备文件,写入这里的内容会全部丢失掉。因此没有日志输出

    nohup java -jar xxx.jar > /dev/null 2>&1 &
    
    • 1

    标准日志无输出,错误日志重定向到/dev/null,因此错误日志也没有输出

    nohup java -jar xxx.jar > /dev/null 2>log.error &
    
    • 1

    错误日志输出到当前目录的log.error文件中

    nohup java -jar xxx.jar > log.out 2>&1 &
    
    • 1

    标准日志和错误日志都输出到当前的目录的log.out文件中

    每天都输出一个文件

    nohup java -jar xxx.jar | /usr/local/cronlog/sbin/cronlog logs/console-%Y-%m-%d.out &
    
    • 1

    上述的方式是使用cron每天定时的方式来产生一个日志文件。

    总结

    以上就是对windows启动项目相关的逻辑、以及对启动项目指定生成日志的方式。大家在后续可以使用这种方式来启动自己的打包后的项目。

  • 相关阅读:
    jQuery事件与特效
    NVIDIA Jetson之docker容器使用
    简陋的nuxt3学习笔记
    【面试题】面试官:说说你对js中的 防抖 和 节流 的理解
    ansible Lineinfile模块
    游戏中的概率实现
    react之基于@reduxjs/toolkit使用react-redux
    C/S - Exploits 学习笔记
    JavaScript:二进制数组【笔记】
    详述进程控制【Linux】
  • 原文地址:https://blog.csdn.net/huanghailiang_ws/article/details/126603489