伺服器如果關機,應用比較多的話,需要重啟把所有程式啟動一遍。
在網上找了一些指令碼,綜合改了一個新的出來。
以後啟動就可以少寫一些命令了。
啟動命令
假定專案名字是fileserver, 檔案伺服器,用來上傳和下載
./start.sh jar包目錄 jar包檔名稱 日誌檔名稱
./start.sh /opt/fileserver fileserver-1.00.jar fileserver_log.log
指令碼名稱start.sh
#!/bin/bash
# -------------------------------------------
# linux下執行jar包的方式如下
# -------------------------------------------
# java -jar xxx.jar
# 當前ssh視窗被鎖定,可按CTRL + C打斷程式執行,或直接關閉視窗,程式退出
# -------------------------------------------
# java -jar xxx.jar &
# 當前ssh視窗不被鎖定,但是當視窗關閉時,程式中止執行。
# -------------------------------------------
# nohup Java -jar xxx.jar &
# 後臺執行命令,當賬戶退出或終端關閉時,程式仍然執行,控制檯輸出到nohup.out檔案
# -------------------------------------------
# nohup Java -jar xxx.jar >/dev/null 2>&1 &
# 後臺執行命令, 控制檯輸出丟棄
# -------------------------------------------
# -------------------------------------------
# jar 包啟動指令碼
# $1 APP 目錄
# $2 APP 名稱
# $3 LOG 名稱
# -------------------------------------------
APP_DIR=$1
APP_NAME=$2
LOG_NAME=$3
echo : [app dir] $APP_DIR
echo : [app name] $APP_NAME
echo : [log name] $LOG_NAME
# -------------------------------------------
# 配置日誌目錄
# -------------------------------------------
LOG_DIR=$APP_DIR/logs
LOG_FILE=$LOG_DIR/$LOG_NAME
echo : [log dir] $LOG_DIR
echo : [log file] $LOG_FILE
# -------------------------------------------
# 查詢應用是否正在執行,如果在執行,就殺掉這些程式
# -------------------------------------------
pid=`ps -ef | grep java |grep $APP_NAME | grep -v grep |awk `{print $2}``
echo $pid
if [ -n "$pid" ]; then
echo : $APP_NAME is running pid=$pid
echo : kill $APP_NAME
kill -9 $pid
fi
cd $APP_DIR
nohup java -jar -Denv=rc $APP_NAME >/dev/null 2>&1 &
tail -f $LOG_FILE