服務器使jar包始終運行,首次啓動慢的解決方案

目錄

 

一、服務器使jar包始終運行

二、SpringBoot啓動jar首次啓動慢的解決方案


一、服務器使jar包始終運行

把java程序打成jar包後,在服務器終端執行,如果使用java -jar xxxx.jar執行,

當我們退出終端的時候,xxxx.jar這個程序也會停止。

爲了保證程序能夠一直運行,應該改爲這樣運行:nohup java -jar xxx.jar&命令,則程序會在後臺一直運行

 原因是:

直接啓動jar文件,在當前會話進程中開啓一個子進程來運行程序,這個子進程會隨着會話進程的結束而結束。這種情況適合短時間測試用。

nohup的意思是不掛斷,只需在要處理的命令前加上 nohup 即可,標準輸出和標準錯誤缺省會被重定向到 nohup.out 文件中。一般我們可在結尾加上"&"來將命令同時放入後臺運行,也可用">filename2>&1"來更改缺省的重定向文件名。這種情況適合在生產環境長時間運行。

nohup啓動可以採用如下兩種方式:

# 把標準輸出重定向到空設備,即只輸出錯誤信息到日誌文件
nohup java -jar app.jar >/dev/null 2>log & 
# 把標準輸出和標準錯誤全重定向到空設備,即不輸出日誌
nohup java -jar app.jar >/dev/null 2>&1 & 

1.   >/dev/null

這條命令的作用是將標準輸出1重定向到/dev/null中。 /dev/null代表linux的空設備文件,所有往這個文件裏面寫入的內容都會丟失,俗稱“黑洞”。那麼執行了>/dev/null之後,標準輸出就會不再存在,沒有任何地方能夠找到輸出的內容。

2.   2>&1

這條命令用到了重定向綁定,採用&可以將兩個輸出綁定在一起。這條命令的作用是錯誤輸出將和標準輸出同用一個文件描述符,說人話就是錯誤輸出將會和標準輸出輸出到同一個地方。

linux在執行shell命令之前,就會確定好所有的輸入輸出位置,並且從左到右依次執行重定向的命令,所以>/dev/null 2>&1的作用就是讓標準輸出重定向到/dev/null中(丟棄標準輸出),然後錯誤輸出由於重用了標準輸出的描述符,所以錯誤輸出也被定向到了/dev/null中,錯誤輸出同樣也被丟棄了。執行了這條命令之後,該條shell命令將不會輸出任何信息到控制檯,也不會有任何信息輸出到文件中。

二、SpringBoot啓動jar首次啓動慢的解決方案

解決辦法 編輯 /usr/java/jdk/jdk1.8.0_211/jre/lib/security/下的java.security 文件
securerandom.source=file:/dev/random
改爲
securerandom.source=file:/dev/./random
這樣就是一個非租塞

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章