Chinaunix

标题: *Nix下定时启动并重启程序的脚本 . [打印本页]

作者: 中关村村草    时间: 2011-12-03 15:05
标题: *Nix下定时启动并重启程序的脚本 .
*Nix下定时启动并重启程序的脚本 .
  1. view plaincopy to clipboardprint?
  2. 01.<pre name="code" class="python">#!/bin/sh   
  3. 02.  
  4. 03.# 设置整个周期的间隔秒数   
  5. 04.CYCLE_INTERVAL=86400  
  6. 05.# 设置启动实例后杀死实例的间隔秒数   
  7. 06.# = CYCLE_INTERVAL 时,代表周期性启动   
  8. 07.# < CYCLE_INTERVAL 时,意味着存在一段不运行间隔时间   
  9. 08.KILL_INTERVAL=86400  
  10. 09.# 设置实例杀死后等待启动的间隔秒数   
  11. 10.IDLE_INTERVAL=$(($( expr $(($CYCLE_INTERVAL)) - $(($KILL_INTERVAL)) )))        
  12. 11.echo "启动实例后杀死实例的间隔秒数=$KILL_INTERVAL"  
  13. 12.echo "实例杀死后等待启动的间隔秒数=$IDLE_INTERVAL"  
  14. 13.  
  15. 14.# 设置可执行sh文件的全路径   
  16. 15.APP_PATH=/home/private/ECMDev/ECMServer-deploy/RtService/run-rtmonitor.sh  
  17. 16.echo "实例启动路径=$APP_PATH"  
  18. 17.  
  19. 18.# 设置上述可执行文件中的启动参数特别的样式   
  20. 19.# 对于java程序,请注意保证每个java程序启动参数 Xmx???? 中????各个不同即可   
  21. 20.APP_PARTERN=Xmx514  
  22. 21.echo "实例中特别的参数样式=$APP_PARTERN"  
  23. 22.  
  24. 23.echo -n "按任意键开始自动运行, Ctrl+C 退出 > "  
  25. 24.read anykey  
  26. 25.  
  27. 26.FISRT_RUN="true"  
  28. 27.  
  29. 28.# 开始自动周期性运行   
  30. 29.while true  
  31. 30.do  
  32. 31. # 杀死上一个运行的实例,防止上次没有干净退出   
  33. 32. pid_apps=$(ps -ef | grep "$APP_PARTERN" | awk 'BEGIN{FS=" "}{print $2","$8}')  
  34. 33. echo $pid_apps  
  35. 34. for pid_app in $pid_apps; do  
  36. 35.  pid=$(echo $pid_app | awk 'BEGIN{FS=","}{print $1}')  
  37. 36.  app=$(echo $pid_app | awk 'BEGIN{FS=","}{print $2}')  
  38. 37.  
  39. 38.  if [ "$pid" == "" ] || [ "$app" == "grep" ] || [ "$app" == "/bin/sh" ] || [ "$app" == "sh" ]; then   
  40. 39.   echo -n ""  
  41. 40.  else  
  42. 41.   echo -n "杀死运行的实例 (PID=$pid)"  
  43. 42.   kill -9 $pid  
  44. 43.    fi  
  45. 44. done  
  46. 45.  
  47. 46. # 初始启动时立即执行实例   
  48. 47. if [ "$FIRST_RUN" == "true" ]; then  
  49. 48.  FIRST_RUN="false"  
  50. 49. else  
  51. 50.  echo "上一次运行的实例已完全退出,准备就绪,下一次运行等待 $IDLE_INTERVAL 秒后启动..."  
  52. 51.  sleep $IDLE_INTERVAL  
  53. 52. fi   
  54. 53.  
  55. 54. # 在后台启动运行进程   
  56. 55. cd $(dirname $APP_PATH)  
  57. 56. $APP_PATH &  
  58. 57.  
  59. 58. sleep 1   
  60. 59. echo "$KILL_INTERVAL 秒后杀死实例"  
  61. 60. sleep $KILL_INTERVAL   
  62. 61.done
复制代码

作者: Shell_HAT    时间: 2011-12-03 15:42
转帖也要专业嘛
行号都不删




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2