1. 程式人生 > 實用技巧 >Linux環境啟動jar

Linux環境啟動jar

大家好 Linux環境啟動jar 有兩種 方式:
啟動方式1:
java -jar app.jar 前臺啟動

啟動方式2:
nohup java -jar app.jar & 後臺啟動
區別:前臺啟動ctrl+c就會關閉程式,後臺啟動ctrl+c不會關閉程式

制定控制檯的標準輸出
java -jar app.jar > catalina.out 2>&1 &

catalina.out將標準輸出指向制定檔案catalina.out
2>&1 輸出所有的日誌檔案
& 後臺啟動
對於上面的命令的解釋:
bash 中 0、1、2 三個數字分別代表 STDIN_FILENO 、 STDOUT_FILENO 、STDERR_FILENO ,即標準輸入(一般是鍵盤),標準輸出(一般是顯示屏,準確的說是使用者終端控制檯),標準錯誤(出錯資訊輸出)。

數字 含義
0 標準輸入(一般是鍵盤)
1 標準輸出(一般是顯示屏,準確的說是使用者終端控制檯)
2 標準錯誤(出錯資訊輸出)

啟動方式3:
編寫shell指令碼啟動

在app.jar 同目錄下編輯app.sh指令碼檔案
內容如下:

!/bin/sh

功能簡介:啟動app.jar 檔案

注意:在sh檔案中=賦值,左右兩側不能有空格

APP=app
APP_NAME=${APP}".jar"

log_dir=/home/jar_logs/
log_file=/home/jar_logs/app.log

command=$1

啟動

function start(){
# 日誌資料夾不存在,則建立
if [ ! -d "${log_dir}" ];then
mkdir "${log_dir}"
fi

rm -f tpid
nohup java -jar ${APP_NAME} 1>/dev/null 2>"${log_file}" &
echo $! > tpid
check

}

停止

function stop(){
tpid=ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'
if [ ${tpid} ]; then
echo 'stop process...'
kill -15 $tpid
fi

sleep 5

tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Kill Process!'
    kill -9 $tpid
else
    echo 'Stop Success!'
fi

}

檢查

function check(){
tpid=ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'
if [ ${tpid} ]; then
echo 'App is running.'
else
echo 'App is NOT running.'
fi

}

強制kill程序

function forcekill(){
tpid=ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'

if [ ${tpid} ]; then
    echo 'Kill Process!'
    kill -9 $tpid

fi

}

輸出程序號

function showtpid(){
tpid=ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'
if [ ${tpid} ]; then
echo 'process '$APP_NAME' tpid is '$tpid
else
echo 'process '$APP_NAME' is not running.'
fi
}

if [ "${command}" == "start" ]; then
start

elif [ "${command}" == "stop" ]; then
stop

elif [ "${command}" == "check" ]; then
check

elif [ "${command}" == "kill" ]; then
forcekill

elif [ "${command}" == "tpid" ];then
showtpid

else
echo "Unknow argument...."
fi
編寫完成後需要將指令碼檔案設定超級管理員許可權
chmod +x app.sh

作者:藍胖子CC7
連結:https://www.jianshu.com/p/717afc0e1708
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。