linux后台启动Jar包打印日志方式(windows10)

 更新时间:2024年07月13日 09:20:04   作者:可乐cc呀  
这篇文章主要介绍了linux后台启动Jar包打印日志方式(windows10),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

前言

不多解释命令,一看就懂,如下配置 bat 文件即可

之后会另写一篇bat脚本命令大全,看心情把,就这样

一,windows10 创建start.bat文件

在这里插入图片描述

二,windows10 以文本编辑打开文件

编辑如下命令

@echo off
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit
java -jar D:\test\test.jar > D:\test\log\server.log 2>&1 &
exit
  • 创建shell 对象,判断运行否则关闭窗口;
  • 运行jar 打印日志到指定目录
  • 退出窗口
  • 双击运行

三,windows10 指定配置文件,配置Jvm 环境

编辑如下命令

@echo off

set AppName=monitor-admin

echo start %AppName% service

set JAVA_OPTS=-Xms512m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError ^
-XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC


java -jar  %JAVA_OPTS% ./bin/%AppName%.jar --spring.config.location=./conf/application.yml,./conf/application-druid.yml > ./log/server.log 2>&1 &

echo start success close window

pause
  • 这里的conf 文件夹是同目录级别下的yml 文件,也就是说设置外部的配置文件生效,让jar内部的yml失效,这样做的好处是不用更改配置重新部署,坏处就是配置信息都暴露出来让别人一下都看到了
  • 双击运行

四,windows10 创建stop.bat 关闭特定端口的java程序

@echo off

set port=10011

echo start kill app server, by %port%

for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do taskkill /f /pid %%m


echo end

pause
  • 双击运行

五,windows10 创建restart.bat ,重启jar包

@echo off
%1 mshta vbscript:CreateObject("WScript.Shell").Run("%~s0 ::",0,FALSE)(window.close)&&exit
set port=8080
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do taskkill /f /pid %%m &
set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
java -jar   D:\test\test.jar  --spring.config.location=./conf/application.yml  >  D:\test\log\server.log 2>&1 &
exit

六,Linux下创建 start.sh 文件

将文件变为可执行文件

chmod 777 start.sh

编辑文件内容

AppName 变量值,改为自己的jar 名称即可

#!/bin/sh

APP_HOME="$(cd "$(dirname "$BASH_SOURCE")" && pwd)"
AppName=test
JAR_PATH=$(find "$APP_HOME"/bin -name "${AppName}*.jar")
JAR_NAME=${JAR_PATH##*/}
APP_PID="app.pid"

# JVM参数
JVM_OPTS="-Dname=$JAR_NAME  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError \
-XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"

PID=""
query() {
  PID=$(ps -ef | grep java | grep "$APP_HOME"/bin/$AppName | grep -v grep | awk '{print $2}')
}

echo "Start $JAR_NAME ..."

cd "$APP_HOME" || exit

query
if [ x"$PID" != x"" ]; then
  echo "$AppName is running on pid : ${PID}"
  echo "${PID}" >$APP_PID
else
  nohup java "$JVM_OPTS" -jar "$JAR_PATH" --spring.config.location=./conf/application.yml,./conf/application-druid.yml >/dev/null 2>&1 &
  echo "Start running..."

  sleep 3

  query
  echo "${PID}" >$APP_PID
  echo "Start $JAR_NAME success on pid: ${PID}"
fi

执行文件

./start.sh

七,linux下创建 stop.sh 文件

同上命令,不多撰述,打字费键盘,主要是懒

#!/bin/sh

APP_HOME=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
AppName=test

PID=""
query() {
  PID=$(ps -ef | grep java | grep "$APP_HOME"/bin/$AppName | grep -v grep | awk '{print $2}')
}

echo "Stop $AppName"

query
if [ x"$PID" != x"" ]; then
  kill -TERM "$PID"
  echo "$AppName (pid:$PID) exiting..."
  while [ x"$PID" != x"" ]; do
    sleep 1
    query
  done
  echo "$AppName exited."
else
  echo "$AppName already stopped."
fi

八,linux下创建 restart.sh 文件

同上命令,不多撰述,打字费键盘,主要是懒

#!/bin/sh

APP_HOME="$(cd "$(dirname "$BASH_SOURCE")" && pwd)"

cd "$APP_HOME" || exit

sh stop.sh
sleep 2
sh start.sh

九,总结

  • windows创建文件batlinux需要变为可执行文件,创建sh 文件
  • 后台启动jar包,输出日志
  • 通过端口杀进程,停止运行jar包
  • 学习bat脚本,shell脚本命令

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • Linux中如何通过端口号查找进程号

    Linux中如何通过端口号查找进程号

    这篇文章主要介绍了Linux中如何通过端口号查找进程号问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 阿里云服务器实现域名解析步骤(小白教程)

    阿里云服务器实现域名解析步骤(小白教程)

    这篇文章主要介绍了阿里云服务器实现域名解析步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Ubuntu虚拟机没有网络的原因和解决方案

    Ubuntu虚拟机没有网络的原因和解决方案

    文章介绍了Ubuntu虚拟机在VMware或VirtualBox中无法访问互联网的问题,详细解释了问题原因,并提供了完整的解决方案,包括启动网卡、获取IP地址和重启网络服务等步骤,需要的朋友可以参考下
    2026-03-03
  • Linux7.7设置交换分区SWAP的方法

    Linux7.7设置交换分区SWAP的方法

    这篇文章主要介绍了Linux7.7设置交换分区SWAP的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Centos 6.4 安装Python 2.7 python-pip的详细步骤

    Centos 6.4 安装Python 2.7 python-pip的详细步骤

    这篇文章主要介绍了Centos 6.4 安装Python 2.7 python-pip的详细步骤,需要的朋友可以参考下
    2017-03-03
  • Ubuntu Server 16.04安装MySQL设置远程访问出现问题的完美解决方案(error:10061)

    Ubuntu Server 16.04安装MySQL设置远程访问出现问题的完美解决方案(error:10061)

    Ubuntu 16.04安装MySQL及需要其他主机远程连接MySQL时的设置问题。在安装过程中会出现各种奇葩问题,下面小编给大家带来了Ubuntu Server 16.04安装MySQL设置远程访问出现问题的完美解决方案(error:10061),一起看看吧
    2016-10-10
  • linux之挂载Samba共享方式

    linux之挂载Samba共享方式

    这篇文章主要介绍了linux之挂载Samba共享方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • Linux network启动报错 && nmcli的使用详解

    Linux network启动报错 && nmcli的使用详解

    本文描述了一台虚拟机服务器在网络启动时报错的问题,原因是同时启用了NetworkManager和Network两种网络管理服务,导致冲突,通过停止并禁用NetworkManager服务,重启Network服务解决了问题,文章还介绍了NetworkManager和nmcli的使用方法及常用命令
    2026-04-04
  • Linux使用Crontab定时访问某个路由地址的方法

    Linux使用Crontab定时访问某个路由地址的方法

    我们很多工作都是需要在某个特定的时间去执行它,下面这篇文章主要给大家介绍了关于Linux使用Crontab定时访问某个路由地址的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-06-06
  • centos7云主机系统下挂载磁盘的方法

    centos7云主机系统下挂载磁盘的方法

    本篇文章主要介绍了centos7云主机系统下挂载磁盘的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02

最新评论