一、方式
1、一般分文兩種,一種是打成war包放到tomcat里面;另一種就是打成jar包直接運(yùn)行,jar包里面自帶tomcat;根據(jù)自己需要來決定使用哪種方式,這里我使用的是jar包方式
二、啟動(dòng)
1、直接啟動(dòng):java -jar demo.jar
這種啟動(dòng)方式適合自己測試,因?yàn)橐话悴渴鹪贚inux上,這種方式關(guān)閉會(huì)話窗口或者ctrl+c都會(huì)關(guān)閉Java
2、后臺(tái)啟動(dòng):java -jar demo.jar &
這種方式會(huì)在后臺(tái)靜默運(yùn)行,關(guān)閉會(huì)話窗口會(huì)中斷Java,和上一種一樣,這兩個(gè)日志都是打印在窗口的,關(guān)閉會(huì)話就沒了
3、nohup啟動(dòng):nohup java -jar demo.jar &
這種會(huì)把日志打印到nohup.out文件中,但只會(huì)打印標(biāo)準(zhǔn)輸出不會(huì)打印錯(cuò)誤輸出,關(guān)閉通過pid號(hào)來kill掉
4、nohup啟動(dòng):nohup java -jar demo.jar>/root/demo.log 2>&1 &
這種會(huì)把普通輸出和錯(cuò)誤輸出都打印到demo.log中
# 啟動(dòng)/停止等腳本
#!/bin/sh
ENV=dev
APP_HOME="你的項(xiàng)目路徑"
APP_NAME=MyDemo
RUNNING_USER=root
LOG_DATE=`date +%Y%m%d%H%M%S`
#創(chuàng)建日志路徑
if [[ ! -d "$APP_HOME/logs" ]]; then
mkdir ${APP_HOME}/logs
fi
if [[ ! -f "$APP_HOME/$APP_NAME.jar" ]]; then
echo "---------------------------------"
echo "$APP_NAME不存在>>>>>"
echo "---------------------------------"
exit 1
fi
#實(shí)時(shí)日志
LOG_PATH=${APP_HOME}/logs/${APP_NAME}.out
#GC日志信息
GC_LOG_PATH=${APP_HOME}/logs/gc-${APP_NAME}-${LOG_DATE}.log
#JMX監(jiān)控參數(shù)
JMX="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1091 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
#JVM啟動(dòng)參數(shù)
JVM_OPTS="-Dname=$APP_NAME -Djeesuite.configcenter.profile=$ENV -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -Xloggc:$GC_LOG_PATH -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
APP_FILE=${APP_NAME}.jar
pid=0
#獲取進(jìn)程號(hào)
getPid() {
pid=`ps -ef |grep ${APP_FILE} |grep -v grep |awk '{print $2}'`
}
#啟動(dòng)服務(wù)
start() {
getPid
if [[ ! -n "$pid" ]]; then
JAVA_CMD="nohup java -jar $JVM_OPTS ${APP_HOME}/${APP_NAME}.jar >> $LOG_PATH 2>&1 &"
echo "---------------------------------"
su ${RUNNING_USER} -c "$JAVA_CMD"
echo "啟動(dòng)中>>>>>>>"
echo "---------------------------------"
sleep 2s
#tail -f ${LOG_PATH}
else
echo "$APP_NAME is running PID: $pid"
fi
}
#停止服務(wù)
stop() {
getPid
if [[ ! -n "$pid" ]]; then
echo "$APP_NAME not running"
else
echo "$APP_NAME stop..."
kill -9 ${pid}
fi
}
#重啟服務(wù)
restart() {
stop
sleep 1s
start
}
#服務(wù)狀態(tài)
status() {
getPid
if [[ ! -n "$pid" ]]; then
echo "$APP_NAME not running"
else
echo "$APP_NAME running PID: $pid"
fi
}
#查看最近100行日志
hundred() {
LOG_PATH=${APP_HOME}/logs/${APP_NAME}.out
tail -100f ${LOG_PATH}
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
log)
hundred
;;
*)
echo "$0: Usage: $0 {start|stop|restart|status|log}"
exit 1
;;
esac
5、系統(tǒng)服務(wù)啟動(dòng),自帶定義一個(gè)系統(tǒng)服務(wù)來啟動(dòng),我使用的是這種
1、創(chuàng)建一個(gè)系統(tǒng)服務(wù)文件
vi /etc/systemd/system/demo.service
1.
2、輸入下面信息
[Unit]
# 服務(wù)名稱
Description=demo Service
# 在什么服務(wù)啟動(dòng)后啟動(dòng)
After=syslog.target
[Service]
# jar包啟動(dòng)命令,這里java要寫絕對路徑
ExecStart=/usr/local/jdk1.8.0_291/bin/java -jar /usr/local/java/demo.jar
[Install]
# 設(shè)置服務(wù)安裝,可以設(shè)置多個(gè),用逗號(hào)隔開
WantedBy=multi-user.target
3、保存
4、執(zhí)行命令
復(fù)制
systemctl start demo # 啟動(dòng)
systemctl stop demo # 關(guān)閉
systemctl status demo # 服務(wù)當(dāng)前狀態(tài)
systemctl enable demo # 設(shè)置服務(wù)開機(jī)啟動(dòng)
systemctl disable demo # 關(guān)閉服務(wù)開機(jī)啟動(dòng)
systemctl restart demo # 重啟服務(wù)
-----------------------------------
java -jar 后臺(tái)運(yùn)行 linux jar包如何運(yùn)行l(wèi)inux
https://blog.51cto.com/u_13019/6306686
(責(zé)任編輯:admin)本文地址:http://www.bmm520.net/info/LinuxServer/2023/0624/23985.html