歡迎您光臨本站 註冊首頁

*Nix下定時啟動並重啟程序的腳本 .

←手機掃碼閱讀     火星人 @ 2014-03-03 , reply:0

*Nix下定時啟動並重啟程序的腳本 .

*Nix下定時啟動並重啟程序的腳本 .view plaincopy to clipboardprint?
01.
#!/bin/sh   
  02.  
  03.# 設置整個周期的間隔秒數    
  04.CYCLE_INTERVAL=86400  
  05.# 設置啟動實例后殺死實例的間隔秒數   
  06.# = CYCLE_INTERVAL 時,代表周期性啟動   
  07.# < CYCLE_INTERVAL 時,意味著存在一段不運行間隔時間    
  08.KILL_INTERVAL=86400  
  09.# 設置實例殺死後等待啟動的間隔秒數   
  10.IDLE_INTERVAL=$(($( expr $(($CYCLE_INTERVAL)) - $(($KILL_INTERVAL)) )))        
  11.echo "啟動實例后殺死實例的間隔秒數=$KILL_INTERVAL"  
  12.echo "實例殺死後等待啟動的間隔秒數=$IDLE_INTERVAL"  
  13.  
  14.# 設置可執行sh文件的全路徑    
  15.APP_PATH=/home/private/ECMDev/ECMServer-deploy/RtService/run-rtmonitor.sh  
  16.echo "實例啟動路徑=$APP_PATH"  
  17.  
  18.# 設置上述可執行文件中的啟動參數特別的樣式   
  19.# 對於java程序,請注意保證每個java程序啟動參數 Xmx???? 中????各個不同即可    
  20.APP_PARTERN=Xmx514  
  21.echo "實例中特別的參數樣式=$APP_PARTERN"  
  22.  
  23.echo -n "按任意鍵開始自動運行, Ctrl+C 退出 > "  
  24.read anykey  
  25.  
  26.FISRT_RUN="true"  
  27.  
  28.# 開始自動周期性運行   
  29.while true  
  30.do  
  31. # 殺死上一個運行的實例,防止上次沒有乾淨退出   
  32. pid_apps=$(ps -ef | grep "$APP_PARTERN" | awk 'BEGIN{FS=" "}{print $2","$8}')  
  33. echo $pid_apps  
  34. for pid_app in $pid_apps; do  
  35.  pid=$(echo $pid_app | awk 'BEGIN{FS=","}{print $1}')  
  36.  app=$(echo $pid_app | awk 'BEGIN{FS=","}{print $2}')  
  37.  
  38.  if [ "$pid" == "" ] || [ "$app" == "grep" ] || [ "$app" == "/bin/sh" ] || [ "$app" == "sh" ]; then   
  39.   echo -n ""  
  40.  else  
  41.   echo -n "殺死運行的實例 (PID=$pid)"  
  42.   kill -9 $pid  
  43.    fi  
  44. done  
  45.  
  46. # 初始啟動時立即執行實例   
  47. if [ "$FIRST_RUN" == "true" ]; then  
  48.  FIRST_RUN="false"  
  49. else  
  50.  echo "上一次運行的實例已完全退出,準備就緒,下一次運行等待 $IDLE_INTERVAL 秒后啟動..."  
  51.  sleep $IDLE_INTERVAL  
  52. fi   
  53.  
  54. # 在後台啟動運行進程   
  55. cd $(dirname $APP_PATH)  
  56. $APP_PATH &  
  57.  
  58. sleep 1   
  59. echo "$KILL_INTERVAL 秒后殺死實例"  
  60. sleep $KILL_INTERVAL   
  61.done  				
《解決方案》

轉帖也要專業嘛 行號都不刪:dizzy:

[火星人 ] *Nix下定時啟動並重啟程序的腳本 .已經有453次圍觀

http://coctec.com/docs/service/show-post-1566.html