1.前言
SpringBoot項目在開發階段,執行mvn spring-boot:run
運行項目,達到快速檢驗功能的目的。在生產環境中,則不推薦這樣做,提供兩種式來發布:jar包和war包。本章的實驗是在ubuntu18.04操作系統上進行的。
2.jar包(推薦)
$ nohup java -jar XXX.jar &
命令解釋:
java -jar XXX.jar
:用這種的方式啓動程序,當前終端窗口會被鎖定,不能進行其他操作,按CTRL + C或直接關閉終端窗口都會讓程序退出。java -jar XXX.jar &
:這種方式的話,當前終端窗口不會被鎖定,能進行其他操作,但是當窗口關閉時,程序會退出。nohup java -jar XXX.jar &
:只這種方式,才能夠使當前終端不會被鎖定,可以進行其他操作,即使終端關閉或賬戶退出,也不會中止程序運行。程序仍然在後臺運行。- &表示程序在後臺運行。
- nohup的作用是運行後面的命令,忽略掛起信號。
如果標準輸入是終端,那麼從一個無法讀的文件重定向它(其實就是忽略它);
如果標準輸出是終端,那麼將輸出追加到$HOME/nohup.out文件($HOME是家目錄,在我的實驗環境中就是/home/kyun/nohup.out),可能的話;
如果是錯誤的話,那麼重向它到標準輸出。我們也可以將輸出重定向到我們指定的文件:
$ nohup java -jar XXX.jar >tmp.txt &
這種方式的好處就是當終端關閉或賬戶退出系統時,程序仍然在後臺運行。
3.1輔助命令
- 可通過jobs命令查看後臺運行任務
$ jobs
[1]+ Running nohup java -jar SpringBootGroceryDemo.jar > tmp.txt &
- jobs命令會列出所有後臺執行的作業,並且每個作業前面都有個編號。如果想將某個作業調回前臺控制,只需要執行命令
fg 編號
即可,如:
$ fg 1
nohup java -jar SpringBootGroceryDemo.jar > tmp.txt
- 使用
ps aux | grep 程序名
查看web的pid
$ ps aux | grep SpringBootGroceryDemo
kyun 13966 2.3 4.2 5165192 345532 pts/4 Sl 00:50 0:15 java -jar SpringBootGroceryDemo.jar
- 查看某端口占用的線程的pid
$ netstat -nlp | grep :8080
- 關閉程序
kill pid
$ kill 13966