Chinaunix首页 | 论坛 | 博客
  • 博客访问: 129172
  • 博文数量: 31
  • 博客积分: 1420
  • 博客等级: 上尉
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-29 14:04
文章分类

全部博文(31)

文章存档

2014年(1)

2013年(1)

2011年(4)

2010年(2)

2008年(23)

我的朋友
最近访客

分类: LINUX

2011-12-02 22:41:00

  1. #!/bin/sh

  2. # 设置整个周期的间隔秒数
  3. CYCLE_INTERVAL=86400
  4. # 设置启动实例后杀死实例的间隔秒数
  5. # = CYCLE_INTERVAL 时,代表周期性启动
  6. # < CYCLE_INTERVAL 时,意味着存在一段不运行间隔时间
  7. KILL_INTERVAL=86400
  8. # 设置实例杀死后等待启动的间隔秒数
  9. IDLE_INTERVAL=$(($( expr $(($CYCLE_INTERVAL)) - $(($KILL_INTERVAL)) )))
  10. echo "启动实例后杀死实例的间隔秒数=$KILL_INTERVAL"
  11. echo "实例杀死后等待启动的间隔秒数=$IDLE_INTERVAL"


  12. # 设置可执行sh文件的全路径
  13. APP_PATH=/home/private/ECMDev/ECMServer-deploy/RtService/run-rtmonitor.sh
  14. echo "实例启动路径=$APP_PATH"

  15. # 设置上述可执行文件中的启动参数特别的样式
  16. # 对于java程序,请注意保证每个java程序启动参数 Xmx????????各个不同即可
  17. APP_PARTERN=Xmx514
  18. echo "实例中特别的参数样式=$APP_PARTERN"

  19. echo -n "按任意键开始自动运行, Ctrl+C 退出 > "
  20. read anykey

  21. FISRT_RUN="true"

  22. # 开始自动周期性运行
  23. while true
  24. do
  25.  # 杀死上一个运行的实例,防止上次没有干净退出
  26.  pid_apps=$(ps -ef | grep "$APP_PARTERN" | awk 'BEGIN{FS=" "}{print $2","$8}')
  27.  echo $pid_apps
  28.  for pid_app in $pid_apps; do
  29.   pid=$(echo $pid_app | awk 'BEGIN{FS=","}{print $1}')
  30.   app=$(echo $pid_app | awk 'BEGIN{FS=","}{print $2}')

  31.   if [ "$pid" == "" ] || [ "$app" == "grep" ] || [ "$app" == "/bin/sh" ] || [ "$app" == "sh" ]; then
  32.    echo -n ""
  33.   else
  34.    echo -n "杀死运行的实例 (PID=$pid)"
  35.    kill -9 $pid
  36.     fi
  37.  done

  38.  # 初始启动时立即执行实例
  39.  if [ "$FIRST_RUN" == "true" ]; then
  40.   FIRST_RUN="false"
  41.  else
  42.   echo "上一次运行的实例已完全退出,准备就绪,下一次运行等待 $IDLE_INTERVAL 秒后启动..."
  43.   sleep $IDLE_INTERVAL
  44.  fi

  45.  # 在后台启动运行进程
  46.  cd $(dirname $APP_PATH)
  47.  $APP_PATH &

  48.  sleep 1
  49.  echo "$KILL_INTERVAL 秒后杀死实例"
  50.  sleep $KILL_INTERVAL
  51. done
阅读(531) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~