在當前目錄中 java -jar xxx.jar 這僅僅是前台運行退出就失效
后台運行:nohup java -jar xxx.jar > catalina.out 2>&1 &
命令詳解:
nohup:不掛斷地運行命令,退出帳戶之后繼續運行相應的進程。
nohup java -jar xxx.jar >日志文件名.log:是nohup把command的輸出重定向到當前目錄的指定的“日志文件名.log”文件中,即輸出內容不打印到屏幕上,
而是輸出到”日志文件名.log”文件中。不指定文件名會在當前目錄創建nohup.out,如果當前目錄的 nohup.out 文件不可寫,
輸出重定向到 $HOME/nohup.out 文件中。如果沒有文件能創建或打開以用於追加,那么 Command 參數指定的命令不可調用。
2>&1:2就是標准錯誤,1是標准輸出,該命令相當於把標准錯誤重定向到標准輸出么。這里&相當於標准錯誤等效於標准輸出,
即把標准錯誤和標准輸出同時輸出到指定的“日志文件名.log”文件中。
java -jar 自己的springboot項目.jar:執行springboot的項目,如果單單只執行該命令,linux只會短暫的運行該項目,當退出控制台后會自動關閉該項目。
最后的&:讓該作業在后台運行。
當我們需要停止運行的時候 每次都要通過 jps命令查找當前服務進程號
這樣一次兩次還能接受 頻繁的話,就不太友好了
自定義腳本文件wss.sh
#!/bin/bash #這里可替換為你自己的執行程序,其他代碼無需更改 APP_NAME=xxx.jar #你的jar包 #使用說明,用來提示輸入參數 usage() { echo "Usage: sh wss.sh [start|stop|restart|status]" exit 1 } #檢查程序是否在運行 is_exist(){ pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' ` #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi } #啟動方法 start(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is already running. pid=${pid} ." else nohup java -jar $APP_NAME > catalina.out 2>&1 & echo "${APP_NAME} start success" fi } #停止方法 stop(){ is_exist if [ $? -eq "0" ]; then kill -9 $pid else echo "${APP_NAME} is not running" fi } #輸出運行狀態 status(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is running. Pid is ${pid}" else echo "${APP_NAME} is NOT running." fi } #重啟 restart(){ stop start } #根據輸入參數,選擇執行對應方法,不輸入則執行使用說明 case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; *) usage ;; esac
進入到目錄使用 sh wss.sh start 啟動
sh wss.sh stop 停止