公司項目中,centos7服務(wù)器每次開機后,jar包都需要一個個輸入指令,手動開啟,非常繁瑣。參考大佬的文檔后,整理以下步驟:
公司項目中,centos7服務(wù)器每次開機后,jar包都需要一個個輸入指令,手動開啟,非常繁瑣。參考大佬的文檔后,整理以下步驟:
thinvent-auth.jar thinvent-gateway.jar thinvent-iot-boot.jar thinvent-modules-system.jar thinvent-modules-file.jar12345
在/etc/rc.d/init.d目錄下創(chuàng)建jar_auto.sh文件
vim /etc/rc.d/init.d/jar_auto.sh1
腳本內(nèi)容如下:
自啟動腳本內(nèi)容:
#!/bin/bash#配置jdk的路徑export JAVA_HOME=/usr/local/java/jdk1.8.0_161 #此處為我的java環(huán)境路徑,需要改為自己的JDK路徑export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH #有時需要把jar包延時啟動(比如博主不設(shè)置延時啟動jar,nacos會提示拒絕連接) #延時30S運行jar包,需要延時啟動則放開sleep注釋行 (sleep+數(shù)字,表示延遲多少秒啟動) #sleep 30#配置jar包啟動的路徑 日志生成路徑 nohup表示靜默啟動,不在窗口顯示啟動日志 nohup java -jar /usr/local/tomcat/jar/thinvent-auth.jar(jar包所在路徑,改為自己的) > /usr/local/tomcat/jar/thinvent-auth.log&(日志生成路徑,改為自己的)nohup java -jar /usr/local/tomcat/jar/thinvent-gateway.jar > /usr/local/tomcat/jar/thinvent-gateway.log&nohup java -jar /usr/local/tomcat/jar/thinvent-iot-boot.jar > /usr/local/tomcat/jar/thinvent-iot-boot.log&nohup java -jar /usr/local/tomcat/jar/thinvent-modules-system.jar > thinvent-modules-system.log&nohup java -jar /usr/local/tomcat/jar/thinvent-modules-file.jar > /usr/local/tomcat/jar/thinvent-modules-file.log&1234567891011121314151617
注意:如果jar包配置文件沒有配置運行的端口,需要指定jar運行的端口,添加 --server.port=jar運行端口:
nohup java -jar /usr/local/tomcat/jar/thinvent-auth.jar --server.port=18070 > /usr/local/tomcat/jar/thinvent-auth.log&1
因博主的jar包內(nèi)配置文件已指定jar程序運行的端口,所以在腳本中不需要再指定運行的端口!!!
注意:多個jar進程啟動時,如果進程過多或者服務(wù)器本身內(nèi)存不大,會占用較多內(nèi)存,如果不進行優(yōu)化會導(dǎo)致服務(wù)器內(nèi)存爆表,服務(wù)器卡頓嚴重,因此強烈建議對jar運行內(nèi)存進行優(yōu)化。
以上腳本在實際項目中占用了過多內(nèi)存,導(dǎo)致服務(wù)器內(nèi)存直接占用100%,導(dǎo)致其他進程和應(yīng)用無法啟動。
優(yōu)化方法為:在jar包的啟動腳本中,限制jar包占用的內(nèi)存。強烈建議將所有的jar啟動腳本改為以下形式:
nohup java -jar -Xms1024M -Xmx1024M -XX:PermSize=512M -XX:MaxPermSize=512M jar包名.jar > jar啟動日志.log&1
優(yōu)化詳解:
1、-Xms :表示java虛擬機堆區(qū)內(nèi)存初始內(nèi)存分配的大小,通常為操作系統(tǒng)可用內(nèi)存的1/64大小即可,但仍需按照實際情況進行分配。
2、-Xmx: 表示java虛擬機堆區(qū)內(nèi)存可被分配的最大上限,通常為操作系統(tǒng)可用內(nèi)存的1/4大小。
3、-XX:PermSize:表示非堆區(qū)初始內(nèi)存分配大小,其縮寫為permanent size(持久化內(nèi)存)。
4、-XX:MaxPermSize:表示對非堆區(qū)分配的內(nèi)存的最大上限。即jar進程啟動后可占用服務(wù)器的最大內(nèi)存。
項目實際腳本如下所示(請根據(jù)自己的JDK版本,配置jar啟動腳本):
----------------------------注意:以下腳本為JDK8版本以下適用----------------------------
#!/bin/bash #配置jdk的路徑 export JAVA_HOME=/usr/local/java/jdk1.8.0_161 #此處為我的java環(huán)境路徑,需要改為自己的JDK路徑 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH #有時需要把jar包延時啟動(比如博主不設(shè)置延時啟動jar,nacos會提示拒絕連接) #延時30S運行jar包,需要延時啟動則放開sleep注釋行 (sleep+數(shù)字,表示延遲多少秒啟動) #sleep 30#配置jar包啟動的路徑 日志生成路徑 nohup表示靜默啟動,不在窗口顯示啟動日志 nohup java -jar -Xms1024M -Xmx1024M -XX:PermSize=512M -XX:MaxPermSize=512M /usr/local/tomcat/jar/thinvent-auth.jar(jar包所在路徑,改為自己的) >/usr/local/tomcat/jar/thinvent-auth.log&(jar日志生成路徑,改為自己的)nohup java -jar -Xms1024M -Xmx1024M -XX:PermSize=512M -XX:MaxPermSize=512M /usr/local/tomcat/jar/thinvent-gateway.jar > /usr/local/tomcat/jar/thinvent-gateway.log&nohup java -jar -Xms1024M -Xmx1024M -XX:PermSize=512M -XX:MaxPermSize=512M /usr/local/tomcat/jar/thinvent-iot-boot.jar > /usr/local/tomcat/jar/thinvent-iot-boot.log&nohup java -jar -Xms1024M -Xmx1024M -XX:PermSize=512M -XX:MaxPermSize=512M /usr/local/tomcat/jar/thinvent-modules-system.jar > thinvent-modules-system.log&nohup java -jar -Xms1024M -Xmx1024M -XX:PermSize=512M -XX:MaxPermSize=512M /usr/local/tomcat/jar/thinvent-modules-file.jar > /usr/local/tomcat/jar/thinvent-modules-file.log&1234567891011121314151617
如果服務(wù)器內(nèi)存不大,可以繼續(xù)減小分配的內(nèi)存(內(nèi)存大小一般為1024的倍數(shù)),如下:
java -jar -Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxPermSize=256M1
作用是給jar包分配1024M的最大內(nèi)存,初始運行內(nèi)存為256M,當jar包運行后占用內(nèi)存達到分配最大內(nèi)存(1024M)的70%時,將會釋放jar包的內(nèi)存空間,讓jar包繼續(xù)運行。(個人理解,不對之處請諒解)
----------------------------注意:以下腳本為JDK版本大于等于JDK8時適用----------------------------
#!/bin/bash #配置jdk的路徑 export JAVA_HOME=/usr/local/java/jdk1.8.0_161 #此處為我的java環(huán)境路徑,需要改為自己的JDK路徑 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH #有時需要把jar包延時啟動(比如博主不設(shè)置延時啟動jar,nacos會提示拒絕連接) #延時30S運行jar包,需要延時啟動則放開sleep注釋行 (sleep+數(shù)字,表示延遲多少秒啟動) #sleep 30#配置jar包啟動的路徑 日志生成路徑 nohup表示靜默啟動,不在窗口顯示啟動日志 nohup java -jar -Dfile.encoding=utf-8 -Xms1024M -Xmx1024M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M /usr/local/tomcat/jar/thinvent-auth.jar(需運行的jar包所在路徑,改為自己的) >/usr/local/tomcat/jar/thinvent-auth.log&(jar日志生成路徑,改為自己的)nohup java -jar -Dfile.encoding=utf-8 -Xms1024M -Xmx1024M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M /usr/local/tomcat/jar/thinvent-gateway.jar > /usr/local/tomcat/jar/thinvent-gateway.log&nohup java -jar -Dfile.encoding=utf-8 -Xms1024M -Xmx1024M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M /usr/local/tomcat/jar/thinvent-iot-boot.jar > /usr/local/tomcat/jar/thinvent-iot-boot.log&nohup java -jar -Dfile.encoding=utf-8 -Xms1024M -Xmx1024M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M /usr/local/tomcat/jar/thinvent-modules-system.jar > thinvent-modules-system.log&nohup java -jar -Dfile.encoding=utf-8 -Xms1024M -Xmx1024M -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M /usr/local/tomcat/jar/thinvent-modules-file.jar > /usr/local/tomcat/jar/thinvent-modules-file.log&1234567891011121314151617
加入encoding=utf-8的作用是將編碼格式轉(zhuǎn)為UTF-8格式,避免中文亂碼
chmod +x 命令表示將該文件設(shè)置為可執(zhí)行的文件
我們創(chuàng)建的jar自啟動腳本jar_auto.sh,在/etc/rc.d/init.d目錄下,所有要在該目錄下執(zhí)行賦予可執(zhí)行的權(quán)限指令。
chmod +x /etc/rc.d/init.d/jar_auto.sh #賦予執(zhí)行權(quán)限1
編輯/etc/rc.d目錄下的rc.local文件
vim /etc/rc.d/rc.local1
添加jar自啟動腳本所在的目錄,添加的內(nèi)容如下:
/etc/rc.d/init.d/jar_auto.sh1
將jar自啟動目錄添加到rc.local文件后,需要為文件重新賦予執(zhí)行權(quán)限,執(zhí)行以下命令:
chmod +x /etc/rc.d/rc.local1
重啟測試,查看jar包是否已啟動:
reboot1
使用ps命令查看jar啟動狀態(tài):
#查看包含.jar后綴的文件啟動狀態(tài)
ps -ef | grep .jar1
參考連接:Linux命令 sleep 延遲
原文地址:https://blog.csdn.net/August_Leaf/article/details/122343620
來源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺,并已注明來源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請聯(lián)系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內(nèi)容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責(zé),僅作分享之用,文章版權(quán)及插圖屬于原作者。
Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺保留所有權(quán)利
蘇公網(wǎng)安備32010402000125
蘇ICP備14051488號-3技術(shù)支持:南京博盛藍睿網(wǎng)絡(luò)科技有限公司
南京思必達教育科技有限公司版權(quán)所有 百度統(tǒng)計