Linux上重啓服務的正確命令

在開發環境下,我們經常需要部署代碼,重啓服務,所以會把命令寫在腳本中,方便使用。

我們可能這麼寫

#!/bin/bash

ps -ef | grep backend-api-1.0 | grep -v "\-\-color" |awk '{print $2}' |xargs kill -9
sleep 1
nohup java -jar backend-api-1.0.jar >> backend-api.log 2>&1 &
tail -f backend-api.log

這個腳本看似沒問題,可執行時,會出現kill: 向 PID 發送信號失敗: 沒有那個進程的錯誤,但是服務仍然能正常重啓,也就是ps -ef | grep backend-api-1.0 | grep -v "\-\-color"這個命令並沒有把當前執行進程過濾掉。

正確寫法是:取項目名中的兩個不同的單詞,用兩次grep,而不是用grep -v,如下

#!/bin/bash

ps -ef | grep backend | grep api |awk '{print $2}' |xargs kill -9
sleep 1
nohup java -jar backend-api-1.0.jar >> backend-api.log 2>&1 &
tail -f backend-api.log
歡迎訂閱「K叔區塊鏈」 - 專注於區塊鏈技術學習

博客地址:http://www.jouypub.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章