java專案啟動指令碼
阿新 • • 發佈:2021-06-23
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 751file 給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]$