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