1. 程式人生 > 其它 >java專案啟動指令碼

java專案啟動指令碼

1.指令碼檔案

#!/bin/bash
#jar包檔案路徑及名稱(目錄按照各自配置)
APP_NAME=/usr/nia/fastdfs/nia-fastdfs.jar
#查詢程序,並殺掉當前jar/java程式
pid=`ps -ef|grep $APP_NAME | grep -v grep | awk '{print $2}'`
kill -9 $pid
echo "$pid程序終止成功"
sleep 2
#判斷jar包檔案是否存在,如果存在啟動jar包,並時時檢視啟動日誌

if test -e $APP_NAME
then
echo '檔案存在,開始啟動此程式...'

# 啟動jar包,指向日誌檔案,
2>&1 & 表示開啟或指向同一個日誌檔案 nohup java -jar -Xmx2048m -Xms128m -Xmn128m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m $APP_NAME > nia-fastdfs.log 2>&1 & echo '$APP_NAME 啟動成功...' else echo '$APP_NAME 檔案不存在,請檢查。' fi ~

2.修改指令碼檔案為可執行檔案

chmod +x startup.sh

3.修改檔案許可權

hmod 751
file 給file的屬主分配讀、寫、執行(7)的許可權,給file的所在組分配讀、執行(5)的許可權,給其他使用者分配執

4.此時執行startup.sh會報錯

  進入該檔案路徑,通過./startup.sh執行該檔案出現報錯如下,為什麼出現這個問題呢,是因為我們在本地編寫shell語句的時候,有些語句中可能存在空格或者換行等操作,在語句結尾是\n\r,而linux下的結尾是\n;所以我們在上傳到linux伺服器中時,直接執行會失敗。

-bash: ./hqs.sh: /bin/bash^M: bad interpreter: No such file or directory

  什麼原因呢, 我們有理由懷疑是檔案格式問題? 我們用vim a.sh進入a.sh這個檔案, 然後在底部模式下, 執行:set ff檢視一下, 結果發現fileformat=dos, 看看, 果然是檔案格式問題, 那怎麼解決呢?

方法一:vim a.sh進入a.sh後, 在底部模式下, 執行:set fileformat=unix後執行:x或者:wq儲存修改。 然後就可以執行./a.sh執行指令碼了。(我親自試過, 是ok的)

方法二:直接執行sed-i"s/\r//"a.sh來轉化,然後就可以執行./a.sh執行指令碼了。(我親自試過, 是ok的)

方法三:直接執行dos2unix a.sh來轉化,然後就可以執行./a.sh執行指令碼了。(我的linux上執行dos2unix ./a.sh失敗, 但是不要放棄啊, 加個busybox就可以了), 如下:

dos2unix a.sh   
bash: dos2unix: command not found  
[taoge@localhost learn_shell]$ busybox dos2unix a.sh   
[taoge@localhost learn_shell]$