#!/bin/bash #bighead make a patch 20141010 #如果没输入参数 则提示下用法 if [ $# -eq 0 ] ; then echo "go.sh [需要启动的程序名]" exit fi svr=$1 ######################### 以下内容一般无需修改 ######################### #保存日志的目录 log_path=/tmp/log #设置一些变量 MV="mv -f" log=${svr}.log #设置生成日志名 elog=${svr}.log.err #设置err日志名 #下面代码为保持一天的最近一次重启日志 #log_bak=${svr}.log.$(date +%Y%m%d).log #elog_bak=${svr}.log.$(date +%Y%m%d).err log_bak=${svr}.log.$(date +%Y%m%d_%H%M%S).log elog_bak=${svr}.log.$(date +%Y%m%d_%H%M%S).err #准备工作 允许生成core文件 并切换到脚本所在路径 ulimit -c 1000000 ShDir=${0%/*} cd $ShDir #杀进程 killall -9 -q ${svr} echo "Kill ${svr} process" #备份日志 if [ -f ${log_path}/${log} ]; then ${MV} ${log_path}/${log} ${log_path}/${log_bak} echo "${MV} ${log_path}/${log} ${log_path}/${log_bak}" fi #错误日志有内容才需备份 if [ -f ${log_path}/${elog} ]; then if [ -s ${log_path}/${elog} ]; then ${MV} ${log_path}/${elog} ${log_path}/${elog_bak} echo "${MV} ${log_path}/${elog} ${log_path}/${elog_bak}" fi fi #启动程序前再次确认 进程是不是被干掉了 如果没被干掉 就多等1秒 INFO=`ps aufx | grep "${svr}" | grep -v "grep"` if [ -n "$INFO" ]; then sleep 1 fi #启动程序 带上全路径 echo " ${PWD}/${svr} 2>${log_path}/${elog} > ${log_path}/${log}" nohup ${PWD}/${svr} 2>${log_path}/${elog} > ${log_path}/${log} & echo " " if [ $# -ge 1 ]; then if [ $1 = "showlog" ]; then echo "showlog..." tail -f ${log_path}/${log} fi fi # END