服務因意外掛程式掉,如何保證其自動重啟,繼續提供服務??
shell通過while-do迴圈,用ps -ef|grep 檢查loader程序是否正在執行,如果沒有執行,則啟動,這樣就保證了崩潰掛掉的程序重新被及時啟動。
必須注意兩點:
1、ps |grep 乙個程序時必須加上其路勁,否則容易grep到錯誤的結果;
2、必須用 -v 從結果中去除grep命令自身,否則結果非空
[root@tt ~]# ps -ef| grep redis
redis 678 1 0 14:34 ? 00:00:00 /usr/bin/redis-server 127.0.0.1:6378
redis 679 1 0 14:34 ? 00:00:00 /usr/bin/redis-server 127.0.0.1:6379
root 3030 2995 0 14:35 pts/1 00:00:00 grep --color=auto redis
[root@uap ~]# ps -ef| grep "/usr/bin/redis-server 127.0.0.1:6379"| grep -v grep|wc -l
1
1、編寫restart_redis.sh:
# ! /bin/sh
while true
do procnum=`ps -ef| grep "/usr/bin/redis-server 127.0.0.1:6379"| grep -v grep|wc -l`
if [ $procnum -eq 0 ]
then
systemctl restart redis_log
echo `date +%y-%m-%d` `date +%h:%m:%s` "systemctl restart redis_log" >> /var/log/di/restart_redis_log.log
fisleep 10
done
2、啟動restart.sh
chmod 644 restart_redis.sh1、編寫restart_redis.sh後台執行 nohup ./restart.sh &
# ! /bin/sh
procnum=`ps -ef| grep "/usr/bin/redis-server 127.0.0.1:6379"| grep -v grep|wc -l`
if [ $procnum -eq 0 ]
then
sudo systemctl restart redis_log
echo `date +%y-%m-%d` `date +%h:%m:%s` "systemctl restart redis_log" >>/var/log/restart_redis_log.log
fi
2、啟動restart.sh
chmod 644 restart_redis.sh
*/1 * * * * su - ctdi -c /opt/../restart_redis.sh #表示每分鐘執行一次 sh 檔案
shell指令碼redis操作
指令碼分2部,redis查詢出所需要的key,然後遍歷key查詢出所有的value追加到檔案中 想法 本來是要迴圈遍歷滿足條件key的結果集的,但是失敗了,所有就直接儲存到檔案中,讀取檔案每一行的結果,用這個結果查詢value儲存到新檔案中 進一步優化 因為key的type不同的原因,所有其實可以選...
shell指令碼實現堆疊(模擬合服)
shell用陣列模擬乙個棧,每次彈出來棧頂的最上面兩個元素,進行合服。bin bash test array and stack maxtop 5 堆疊所能存放元素的最大值 declare top 0 定義棧頂指標,初始值為0 temp 定義乙個臨時全域性變數,存放出棧元素,初始值為空 declar...
管理Redis程序的Shell指令碼
下面是乙個 shell 指令碼,用於管理 redis 程序 啟動,停止,重啟 這個指令碼可供參考。bin sh redis this script starts and stops the redis server daemon chkconfig 85 15 description redis i...