go.sh 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/bin/bash
  2. #bighead make a patch 20141010
  3. #如果没输入参数 则提示下用法
  4. if [ $# -eq 0 ] ; then
  5. echo "go.sh [需要启动的程序名]"
  6. exit
  7. fi
  8. svr=$1
  9. ######################### 以下内容一般无需修改 #########################
  10. #保存日志的目录
  11. log_path=/tmp/log
  12. #设置一些变量
  13. MV="mv -f"
  14. log=${svr}.log #设置生成日志名
  15. elog=${svr}.log.err #设置err日志名
  16. #下面代码为保持一天的最近一次重启日志
  17. #log_bak=${svr}.log.$(date +%Y%m%d).log
  18. #elog_bak=${svr}.log.$(date +%Y%m%d).err
  19. log_bak=${svr}.log.$(date +%Y%m%d_%H%M%S).log
  20. elog_bak=${svr}.log.$(date +%Y%m%d_%H%M%S).err
  21. #准备工作 允许生成core文件 并切换到脚本所在路径
  22. ulimit -c 1000000
  23. ShDir=${0%/*}
  24. cd $ShDir
  25. #杀进程
  26. killall -9 -q ${svr}
  27. echo "Kill ${svr} process"
  28. #备份日志
  29. if [ -f ${log_path}/${log} ]; then
  30. ${MV} ${log_path}/${log} ${log_path}/${log_bak}
  31. echo "${MV} ${log_path}/${log} ${log_path}/${log_bak}"
  32. fi
  33. #错误日志有内容才需备份
  34. if [ -f ${log_path}/${elog} ]; then
  35. if [ -s ${log_path}/${elog} ]; then
  36. ${MV} ${log_path}/${elog} ${log_path}/${elog_bak}
  37. echo "${MV} ${log_path}/${elog} ${log_path}/${elog_bak}"
  38. fi
  39. fi
  40. #启动程序前再次确认 进程是不是被干掉了 如果没被干掉 就多等1秒
  41. INFO=`ps aufx | grep "${svr}" | grep -v "grep"`
  42. if [ -n "$INFO" ]; then
  43. sleep 1
  44. fi
  45. #启动程序 带上全路径
  46. echo " ${PWD}/${svr} 2>${log_path}/${elog} > ${log_path}/${log}"
  47. nohup ${PWD}/${svr} 2>${log_path}/${elog} > ${log_path}/${log} &
  48. echo " "
  49. if [ $# -ge 1 ]; then
  50. if [ $1 = "showlog" ]; then
  51. echo "showlog..."
  52. tail -f ${log_path}/${log}
  53. fi
  54. fi
  55. # END