linux后臺(tái)啟動(dòng)Jar包打印日志方式(windows10)
前言
不多解釋命令,一看就懂,如下配置 bat 文件即可
- 需要知道什么是
bat文件,百度百科地址:什么是bat - 需要什么是
shell腳本,百度百科地址:什么是shell腳本
之后會(huì)另寫一篇bat腳本命令大全,看心情把,就這樣
一,windows10 創(chuàng)建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
- 創(chuàng)建shell 對(duì)象,判斷運(yùn)行否則關(guān)閉窗口;
- 運(yùn)行jar 打印日志到指定目錄
- 退出窗口
- 雙擊運(yùn)行
三,windows10 指定配置文件,配置Jvm 環(huán)境
編輯如下命令
@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文件夾是同目錄級(jí)別下的yml 文件,也就是說設(shè)置外部的配置文件生效,讓jar內(nèi)部的yml失效,這樣做的好處是不用更改配置重新部署,壞處就是配置信息都暴露出來讓別人一下都看到了 - 雙擊運(yùn)行
四,windows10 創(chuàng)建stop.bat 關(guān)閉特定端口的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
- 雙擊運(yùn)行
五,windows10 創(chuàng)建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下創(chuàng)建 start.sh 文件
將文件變?yōu)榭蓤?zhí)行文件
chmod 777 start.sh
編輯文件內(nèi)容
將 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參數(shù)
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
執(zhí)行文件
./start.sh
七,linux下創(chuàng)建 stop.sh 文件
同上命令,不多撰述,打字費(fèi)鍵盤,主要是懶
#!/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下創(chuàng)建 restart.sh 文件
同上命令,不多撰述,打字費(fèi)鍵盤,主要是懶
#!/bin/sh APP_HOME="$(cd "$(dirname "$BASH_SOURCE")" && pwd)" cd "$APP_HOME" || exit sh stop.sh sleep 2 sh start.sh
九,總結(jié)
windows創(chuàng)建文件bat,linux需要變?yōu)榭蓤?zhí)行文件,創(chuàng)建sh文件- 后臺(tái)啟動(dòng)jar包,輸出日志
- 通過端口殺進(jìn)程,停止運(yùn)行jar包
- 學(xué)習(xí)bat腳本,shell腳本命令
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux中如何通過端口號(hào)查找進(jìn)程號(hào)
這篇文章主要介紹了Linux中如何通過端口號(hào)查找進(jìn)程號(hào)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
阿里云服務(wù)器實(shí)現(xiàn)域名解析步驟(小白教程)
這篇文章主要介紹了阿里云服務(wù)器實(shí)現(xiàn)域名解析步驟,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Ubuntu虛擬機(jī)沒有網(wǎng)絡(luò)的原因和解決方案
文章介紹了Ubuntu虛擬機(jī)在VMware或VirtualBox中無法訪問互聯(lián)網(wǎng)的問題,詳細(xì)解釋了問題原因,并提供了完整的解決方案,包括啟動(dòng)網(wǎng)卡、獲取IP地址和重啟網(wǎng)絡(luò)服務(wù)等步驟,需要的朋友可以參考下2026-03-03
Linux7.7設(shè)置交換分區(qū)SWAP的方法
這篇文章主要介紹了Linux7.7設(shè)置交換分區(qū)SWAP的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Centos 6.4 安裝Python 2.7 python-pip的詳細(xì)步驟
這篇文章主要介紹了Centos 6.4 安裝Python 2.7 python-pip的詳細(xì)步驟,需要的朋友可以參考下2017-03-03
Ubuntu Server 16.04安裝MySQL設(shè)置遠(yuǎn)程訪問出現(xiàn)問題的完美解決方案(error:10061)
Ubuntu 16.04安裝MySQL及需要其他主機(jī)遠(yuǎn)程連接MySQL時(shí)的設(shè)置問題。在安裝過程中會(huì)出現(xiàn)各種奇葩問題,下面小編給大家?guī)砹薝buntu Server 16.04安裝MySQL設(shè)置遠(yuǎn)程訪問出現(xiàn)問題的完美解決方案(error:10061),一起看看吧2016-10-10
Linux network啟動(dòng)報(bào)錯(cuò) && nmcli的使用詳解
本文描述了一臺(tái)虛擬機(jī)服務(wù)器在網(wǎng)絡(luò)啟動(dòng)時(shí)報(bào)錯(cuò)的問題,原因是同時(shí)啟用了NetworkManager和Network兩種網(wǎng)絡(luò)管理服務(wù),導(dǎo)致沖突,通過停止并禁用NetworkManager服務(wù),重啟Network服務(wù)解決了問題,文章還介紹了NetworkManager和nmcli的使用方法及常用命令2026-04-04
Linux使用Crontab定時(shí)訪問某個(gè)路由地址的方法
我們很多工作都是需要在某個(gè)特定的時(shí)間去執(zhí)行它,下面這篇文章主要給大家介紹了關(guān)于Linux使用Crontab定時(shí)訪問某個(gè)路由地址的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-06-06
centos7云主機(jī)系統(tǒng)下掛載磁盤的方法
本篇文章主要介紹了centos7云主機(jī)系統(tǒng)下掛載磁盤的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02

