`
wingware
  • 浏览: 144523 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

修改resin的自动拉起

阅读更多
#! /bin/sh
#
# See contrib/init.resin for /etc/rc.d/init.d startup script
#
# resin.sh can be called like apachectl
#
# resin.sh         -- execs resin in the foreground
# resin.sh start   -- starts resin in the background
# resin.sh stop    -- stops resin
# resin.sh restart -- restarts resin
#
# resin.sh will return a status code if the wrapper detects an error, but
# some errors, like bind exceptions or Java errors, are not detected.
#
# To install, you'll need to configure JAVA_HOME and RESIN_HOME and
# copy contrib/init.resin to /etc/rc.d/init.d/resin.  Then
# use "unix# /sbin/chkconfig resin on"
#JAVA_HOME
JAVA_HOME=/usr/local/java
export JAVA_HOME
#本脚本的绝对路径
EXEC_START="/usr/local/snsconnector/snsconnector.sh"

#执行脚本
RESIN="bin/httpd.sh"
#执行多个resin的多路径
EXEC="/usr/local/snsconnector/snsapi/resin3 /usr/local/snsconnector/testsns/resin3"

array=($EXEC)
length=${#array[@]}
echo $length
for ((i=0; i<$length; i++))
do
    echo ${array[$i]}
done

#####################################################
# Find a PID for the pid file
#####################################################

for ((i=0; i<$length; i++))
do
	RESIN_HOME=${array[$i]}
	SNS_PIDS="$SNS_PIDS $RESIN_HOME/snsconnector.pid "
done

pids=($SNS_PIDS)
size=${#pids[@]}

echo $size
for ((i=0; i<$size; i++))
do
    echo ......${pids[$i]}
done


#
SNS_TAG=snstag


if test -n "${JAVA_HOME}"; then
  if test -z "${JAVA_EXE}"; then
    JAVA_EXE=$JAVA_HOME/bin/java
  fi
fi  

#
# trace script and simlinks to find the wrapper
#
if test -z "${RESIN_HOME}"; then
  script=`/bin/ls -l $0 | awk '{ print $NF; }'`

  while test -h "$script"
  do
    script=`/bin/ls -l $script | awk '{ print $NF; }'`
  done

  bin=`dirname $script`
  RESIN_HOME="$bin/.."
fi  

running()
{
    [ -f $1 ] || return 1
    PID=$(cat $1)
    echo ==========$PID==========
    ps -p $PID >/dev/null 2>/dev/null || return 1
    return 0
}

usage()
{
    echo "Usage: $0 {start|stop|status} [ CONFIGS ... ] "
    exit 1
}

[ $# -gt 0 ] || usage


ACTION=$1
MAINTE_CHECK=$2


#####################################################
# Get current script belongs to User and Group.
#####################################################
[ -z ${SCRIPT_NAME} ] && SCRIPT_NAME=httpd.sh
if [ -f ${RESIN_HOME}/bin/${SCRIPT_NAME} ]
then
	CURRENT_GROUP="$(echo `ls -l ${RESIN_HOME}/bin/${SCRIPT_NAME}` | awk '{print $4}')";
	CURRENT_USER="$(echo `ls -l ${RESIN_HOME}/bin/${SCRIPT_NAME}` | awk '{print $3}')";
else
	echo "** ERROR: Current start service script is:"${RESIN_HOME}/bin/${SCRIPT_NAME}
    echo "** ERROR: The SNS start file is not exist!"
fi
setCrontab()
{
    echo "setCrontab...";
    crontab_tmp=$(mktemp -p "${RESIN_HOME}/bin/")

		if [ x$CURRENT_USER != x$(whoami) ] 
		then
			echo "* * * * * su - $CURRENT_USER -c '"${EXEC_START} start $SNS_TAG" '> /dev/null 2>&1" >> "${crontab_tmp}"
			echo "* * * * * sleep 10; su - $CURRENT_USER -c '"${EXEC_START} start $SNS_TAG"' > /dev/null 2>&1" >> "${crontab_tmp}"
			echo "* * * * * sleep 20; su - $CURRENT_USER -c '"${EXEC_START} start $SNS_TAG"' > /dev/null 2>&1" >> "${crontab_tmp}"
			echo "* * * * * sleep 30; su - $CURRENT_USER -c '"${EXEC_START} start $SNS_TAG"' > /dev/null 2>&1" >> "${crontab_tmp}"
			echo "* * * * * sleep 40; su - $CURRENT_USER -c '"${EXEC_START} start $SNS_TAG"' > /dev/null 2>&1" >> "${crontab_tmp}"
			echo "* * * * * sleep 50; su - $CURRENT_USER -c '"${EXEC_START} start $SNS_TAG"' > /dev/null 2>&1" >> "${crontab_tmp}"
		elif [ x$CURRENT_USER == x$(whoami) ]
		then
			echo "* * * * * '"${EXEC_START} start $SNS_TAG"' > /dev/null 2>&1" >> "${crontab_tmp}"
			echo "* * * * * sleep 10; '"${EXEC_START} start $SNS_TAG"' > /dev/null 2>&1" >> "${crontab_tmp}"
			echo "* * * * * sleep 20; '"${EXEC_START} start $SNS_TAG"' > /dev/null 2>&1" >> "${crontab_tmp}"
			echo "* * * * * sleep 30; '"${EXEC_START} start $SNS_TAG"' > /dev/null 2>&1" >> "${crontab_tmp}"
			echo "* * * * * sleep 40; '"${EXEC_START} start $SNS_TAG"' > /dev/null 2>&1" >> "${crontab_tmp}"
			echo "* * * * * sleep 50; '"${EXEC_START} start $SNS_TAG"' > /dev/null 2>&1" >> "${crontab_tmp}"
		fi
	
		tail "${crontab_tmp}"
	crontab "${crontab_tmp}"
	rm -f ${crontab_tmp}
	return 0
}


case "$ACTION" in
  start)

	for ((i=0; i<$length; i++))
	do
		RESIN_HOME=${array[$i]}
		RUN_CMD=$RESIN_HOME/$RESIN
		SNS_PID=${pids[$i]}
		echo -n "$RESIN_HOME Starting snsconnector: "
		if [ x$MAINTE_CHECK == x$SNS_TAG ] && [ -f "$RESIN_HOME/$SNS_TAG" ]
		then
			echo "Maintenance period,can't start sns service!"
			exit 1
		fi
		if [ -f $SNS_PID ]
		then
			if running $SNS_PID
			then
				echo "Already Running!!"
				echo "snsconnector running pid is:"`cat $RESIN_HOME/snsconnector.pid`
#exit 1
continue
			else
				# dead pid file - remove
				rm -f $SNS_PID
			fi
		fi
	    
		if [ x$CURRENT_USER != x ] && [ x$CURRENT_USER != x$(whoami) ] 
		then
			touch $SNS_PID
			chown $CURRENT_USER:$CURRENT_GROUP $SNS_PID
			su - $CURRENT_USER -c "
			$RUN_CMD > /dev/null 2>&1 &
			PID=\$!
			disown \$PID
			echo \$PID > $SNS_PID"
			echo pid=$PID
			echo sns_pid=$SNS_PID
		elif [ x$CURRENT_USER == x$(whoami) ]
		then
			echo ===$RUN_CMD===
			touch $SNS_PID
			eval "
			$RUN_CMD > /dev/null 2>&1 &
			PID=\$!
			disown \$PID
			echo \$PID > $SNS_PID"
			echo pid=$PID
                        echo sns_pid=$SNS_PID
		fi 
		sleep 5
		if running $SNS_PID
		then
			rm -f $RESIN_HOME/$SNS_TAG
			echo "OK"
			echo "pid is `cat $SNS_PID 2>/dev/null`"
			echo "STARTED AT `date`"
		else
			echo "FAILED!"
		fi
	done
	setCrontab;
	exit 1
        ;;

  stop)

	for ((i=0; i<$length; i++))
	do
		RESIN_HOME=${array[$i]}
		SNS_PID=${pids[$i]}
		echo -n "$RESIN_HOME Stopping snsconnector... "
		if running $SNS_PID
		then
			PID=`cat $RESIN_HOME/$SNS_PID 2>/dev/null`
			TIMEOUT=60
			while running $SNS_PID && [ $TIMEOUT -gt 0 ]
			do
				kill $PID 2>/dev/null
				echo -n "."
				sleep 1
				let TIMEOUT=$TIMEOUT-1
			done
		
			[ $TIMEOUT -gt 0 ] || kill -9 $PID 2>/dev/null
			rm -f $SNS_PID
			echo OK
		else
			echo $SNS_PID snsconnector service already stopped,stop failed!
		fi
	        touch $RESIN_HOME/$SNS_TAG
	done
	exit 1
        ;;

  status)

	for ((i=0; i<$length; i++))
	do
	    RESIN_HOME=${array[$i]}
	    SNS_PID=${pids[$i]}
		    if running $SNS_PID
		    then
			PID=`cat $SNS_PID 2>/dev/null`
			echo "snsconnector(pid $PID) is running!"
		    else
			rm -f $SNS_PID
			echo "snsconnector has stoped!"
		    fi
	done
    exit 1
    ;;

*)
        usage
    ;;
esac

exit 0
分享到:
评论

相关推荐

    resin内存益出后自动重启

    ### Resin内存溢出后自动重启方案解析 #### 背景介绍 Resin是一款高性能、功能丰富的Java应用服务器及Web容器,广泛应用于各种企业级应用程序和服务中。它支持多种编程语言,包括Java、JSP等,并且在性能优化方面...

    resin3 和 resin4

    Resin,由CAUCHO公司开发,是一款备受推崇的应用服务器,尤其在处理Servlet和JSP方面表现出色。作为Java语言的产物,Resin以其高效能和稳定性的特点,在IT行业中赢得了广泛的认可。Resin3和Resin4是该服务器软件的两...

    resin服务器有3部分,resin1,resin-webapp,resin-lib,由于大小限制分开传

    Resin会自动检测并加载这些应用,提供HTTP服务、Servlet容器、JSP引擎等功能。此外,它可能还包含一些默认的或者示例性的Web应用,帮助用户快速理解和使用Resin。 3. **resin-lib**: 这部分包含了Resin服务器运行所...

    resin3 resin3下载

    【Resin3】是CometD项目下的一个高性能、轻量级的Java应用服务器,它最初由Caucho Technology开发并维护。Resin3版本3.0.21是该系列的一个重要版本,提供了对Java EE 5标准的支持,包括Servlet 2.5、JSP 2.1和EJB ...

    resin4.0 服务器 (for windows版本)

    4. **负载均衡与集群**:Resin支持多服务器集群,可以实现自动负载均衡,提高系统的可用性和扩展性。 5. **高并发处理**:Resin通过非阻塞I/O模型处理并发请求,能有效应对高流量场景,避免了线程池的资源消耗。 6...

    resin linux 重启脚本

    resin linux 重启脚本,包括进程杀死,端口检测等

    使用Resin在IDE中快速启动web项目

    3. 调试模式:通过修改resin.xml配置,可以开启JVM的远程调试端口,配合IDE的远程调试功能,对运行中的Web应用进行调试。 总结:Resin作为一个高效的应用服务器,能够很好地与各种IDE集成,简化Web项目的开发和调试...

    resin-3.0.24.zip

    开发者在开发过程中,修改完Java代码后,无需手动重启服务器,Resin会自动检测到变化并重新加载新的类,极大地提高了开发效率。对于持续迭代和调试的项目来说,这是一个非常实用的功能。 2. 高性能:Resin以其高...

    resin3.0中的https配置

    1. **修改 Resin 配置文件**: - 打开 Resin 的配置文件 `resin.conf`,并在 `&lt;http&gt;` 节点内添加以下配置来启用 HTTPS: ```xml &lt;certificate-file&gt;keys/gryffindor.crt &lt;certificate-key-file&gt;keys/...

    resin的eclipse插件,支持resin 3.1

    5. **热部署**:支持代码修改后自动部署,减少手动刷新服务器的步骤,提升开发速度。 描述中提到的"博文链接:https://guying1028.iteye.com/blog/1797115",虽然没有提供具体的信息,但可以推测这是一个关于如何...

    Resin源码解读1

    《Resin源码解读》 Resin,作为一个高性能的Java应用服务器,其源码解析对于我们深入理解Web服务器的运行机制和优化技术具有重要的价值。本文将从日志分析、运行时调试、网络模型以及线程池模型四个方面进行深入...

    resin-1 resin服务器有三部分

    【标题】:“resin-1 resin服务器的组件详解” 【正文】: Resin服务器是一款高效、轻量级的Java应用服务器,尤其适用于处理高并发的Web应用。它由多个核心组件构成,使得其在性能、稳定性和扩展性上具有显著优势。...

    resin中关于日志的配置

    - Resin的日志配置通常位于`conf/resin.xml`文件中,可以通过修改此文件来定制日志行为。 - 配置文件中的`&lt;logger&gt;`标签用于定义日志记录器,可以设置多个日志记录器以满足不同模块或级别的需求。 3. **日志级别*...

    resin服务器resin-pro-3.1.8

    - **自动扩展**:可以根据负载情况动态添加或移除服务器节点,实现自动扩展。 7. **日志与监控**: - **详细的日志记录**:Resin提供了详细的日志功能,有助于问题排查和性能分析。 - **性能监控**:通过日志和...

    Windows下Resin的配置与部署(附图).doc

    1. **无法启动Resin服务**:检查端口是否被占用,尝试更改端口号。 2. **管理员账户无法登录**:确认用户名和密码是否正确,密码是否经过正确的加密。 3. **项目部署失败**:确保MyEclipse中Resin服务器配置无误,...

    在Windwos下安装和配置Resin

    Resin会自动检测这个文件并进行部署。如果你的应用不需要打包,可以直接将应用的文件结构放到"webapps"目录下的自定义子目录中。 5. **与IIS集成**:为了通过IIS访问Resin上的JSP应用,需要配置IIS的ISAPI筛选器。...

    Resin-install.rar_resin_resin install

    初学者需要理解并修改`resin.xml`来适应自己的应用需求。 4. **Resin环境变量**:为了定制Resin的行为,可能需要设置一些环境变量,如`RESIN_HOME`指向Resin的安装目录,`JAVA_HOME`指向JDK的安装路径。这些环境...

    centos下resin-2.1.17安装

    最后,为了让 Resin 能够随系统启动自动运行,需要将启动脚本复制到系统初始化目录: ```bash cp /home/resin/contrib/init.resin /etc/rc.d/init.d/resin ``` 至此,Resin 在 CentOS 上的安装与基本配置完成。可以...

    resin4+wrapper green

    Resin4+Wrapper Green是一个专为简化Resin4部署而设计的解决方案,它允许你在不依赖.NET组件的情况下启动和管理Resin服务器。Resin是一款高效、轻量级且功能强大的Java应用服务器,常用于托管Java web应用程序。...

    Resin 与 eclipse的集成

    当我们在Eclipse中修改了Java类或Web资源后,保存更改,Eclipse会自动检测到变化并重新部署到Resin,这样就可以实时查看代码修改的效果,大大提高了开发效率。 在实际开发过程中,我们可能还会遇到一些问题,例如...

Global site tag (gtag.js) - Google Analytics