真後悔沒有早點用shell腳本,我才花了2天搞完了shell菜鳥教程,解決了我一個陳年舊病
因為我一直用node-red,但是有時候node-red會莫名其妙的掉線了,發現的時候已經丢失了很多資料了。
1、了解指令 p2 -ef | grep "**" | grep -v grep
這個是根據名稱查找程序,并且過濾掉grep自己的程序
2、開始寫腳本
#!/bin/bash
while true :
do
ps -ef | grep "node-red" | grep -v grep
if [ "$?" -ne 0 ]
then pm2 start ~/Desktop/nodejs/bin/node-red -- -v
else echo "common--->"
fi
sleep 10
done
while true :
do
語句A
done
這個是一個死循環,會一直執行語句
這裡的語句A是什麼呢?
執行ps -ef | grep "node-red" | grep -v grep
擷取結果"$?" 的長度
-ne是不等于的意思
我們可以做一個測試,
#!/bin/bash
ps -ef | grep "node-red" | grep -v grep
echo "$?"
當node-red正常運作的時候,看看ps -ef | grep "node-red" | grep -v grep傳回的是什麼?
當node-red異常運作的時候,看看ps -ef | grep "node-red" | grep -v grep傳回的是什麼?
根據以上的測試,我們發現,當傳回的不為0的時候,就說明程序異常;
死循環的話,感覺太耗性能了,也沒有必要
可以每次執行結束以後,休眠10s sleep 10
以下腳本如下
#!/bin/bash
while true :
do
ps -ef | grep "node-red" | grep -v grep
echo "$?"
if [ "$?" -ne 0 ]
then pm2 start ~/Desktop/nodejs/bin/node-red -- -v
else echo "common--->"
fi
sleep 10
done
測試腳本是否有效
1、node-red的初始狀态是關閉
2、啟用腳本 ./pm2 start 發現啟動了node-red
3、現在檢視node-red的啟動狀态
pm2 list
node-red啟動了
因為每次循環間隔10s,若未啟用,則啟用,若啟用了,則列印common--->
我們可以看到下圖左邊都是common--->
4、我關閉node-red,看看腳本會不會啟用node-red
幾秒以後啟用了,哈哈哈哈哈,完美