csp crash check and restart script

Bienvenid@ a elRulo.com
Si todavía no es miembro de la comunidad, regístrese aquí
Registro

VJ_ZamO

Administrador
Miembro del Staff
Registrado
21 Mar 2011
Mensejes
2.816
Puntos de reacción
26
Puntos
48
Code:
[COLOR=#000000][FONT=Tahoma]Hi guys.[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]have you ever had problem with csp crashes and shutdown?[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]this trick can probably help you[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]this is a restart.sh script that run from cron, every x minut ( x = 1-5 min)[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]this script requires that you have a init.d start stop and restart script for your csp.[/FONT][/COLOR]


[COLOR=#000000][FONT=Tahoma]make a file called restart.sh and place it in /etc/init.d copy the below text in it and chmod 0775[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]#!/bin/bash[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if ! ps x |grep -v grep |grep -c /usr/local/csp >/dev/null [/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]then[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]/etc/init.d/csp.sh start [/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]else[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo "ok"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]this example requires that you have this init.d script for starting csp[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]to utilize this script you need to have a entry in /etc/cron[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]this entry runs the restart.sh script every 1 min[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]* * * * * root /etc/init.d/restart.sh >/dev/null[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]csp.sh placed in /etc/init.d chmod 0755[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]#!/bin/sh[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]# Start/stop the cardproxy.[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]#[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]### BEGIN INIT INFO[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]# Provides: cardserver[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]# Required-Start: $remote_fs[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]# Required-Stop: $remote_fs[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]# Default-Start: 2 3 4 5[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]# Default-Stop: 1[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]### END INIT INFO[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]#################################################################[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]# CSP startup script [/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]# By Bowman 2007[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]# Modified by Spokryttare 2007-09-18[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]# Added enviorment variabels for use in the startup of csp[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]# deamon, change cwd to csp directory and added restart choice[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]################################################################# [/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]# Edit DAEMONPATH to match the proxy install dir[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]################################################################# [/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]DAEMONPATH=/usr/local/csp[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]DAEMON=$DAEMONPATH/lib/cardservproxy.jar[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]NAME=Cardservproxy[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]DESC="Cardservproxy Daemon"[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]## uncomment this for large csp installations[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]JVM_PARAMS="-Xmx1024m -Dsun.net.inetaddr.ttl=0"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]## otherwise use this[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]#JVM_PARAMS="-Dsun.net.inetaddr.ttl=0"[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]case "`uname -s`" in[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]'CYGWIN'*)[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]SYSTEM="Cygwin"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma];;[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]'Linux')[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]SYSTEM="Linux"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma];;[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]'OSF1')[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]SYSTEM="Tru64"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma];;[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]'SunOS')[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]SYSTEM="Solaris"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma];;[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]*)[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]SYSTEM="Unknown"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma];;[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]esac[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]PID_FILE=$DAEMONPATH/cardservproxy.pid[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]serverpid() {[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ -f $PID_FILE ]; then[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ "$SYSTEM" = "Cygwin" ]; then[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]PID=`cat $PID_FILE`[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ "x"$PID != "x" ]; then[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ -n "`ps | grep $PID`" ]; then[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]cat $PID_FILE[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]return[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]else[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ "$SYSTEM" = "Solaris" ]; then[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ -n "`cat $PID_FILE | xargs ps -p | tail +2`" ]; then[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]cat $PID_FILE[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]return[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]else[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ -n "`cat $PID_FILE | xargs ps | tail -n +2`" ]; then[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]cat $PID_FILE[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]return[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo -n 0[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]}[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]echoresult() {[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo -n " "[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]$MOVE_TO_COL[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo -n "[ "[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo -n $1[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo " ]"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]shift[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ "$#" != "0" ] ; then echo "$1" ; fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]}[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]case "$1" in[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]##start## [/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]'start')[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]cd $DAEMONPATH[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo -n "Starting : $NAME"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ "`serverpid`" != "0" ]; then[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echoresult FAILED "An instance of the $DESC is already running"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]exit 1[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]java $JVM_PARAMS -jar $DAEMON > log/cardserv-sysout.log 2>&1 &[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo $! > $PID_FILE[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]sleep 3[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]ERR=`cat log/cardserv-sysout.log | grep '[Ee]rror\|[Ee]xception\|[Ff]ailed\|not found'`[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ "$ERR" ]; then[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echoresult FAILED[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo `cat log/cardserv-sysout.log`[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]OP=`serverpid`[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ $OP != "0" ]; then [/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]kill $OP [/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]rm $PID_FILE[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]exit[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]else[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echoresult OK[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma];;[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]##stop##[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]'stop')[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]cd $DAEMONPATH[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo -n "Stopping : $NAME"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]OP=`serverpid`[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ $OP != "0" ]; then[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]rm $PID_FILE[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]kill $OP[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echoresult OK[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]else[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echoresult FAILED "Cannot determine pid"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma];;[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]##restart## [/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]'restart')[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo -n "restarting : $DESC" [/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo -n "[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]" [/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]$0 'stop' && sleep 3 && $0 'start'[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma];; [/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]##dump##[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]'dump')[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo -n "Sending SIGQUIT:"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]OP=`serverpid`[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ $OP != "0" ]; then[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]kill -3 $OP[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echoresult OK[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]else[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echoresult FAILED "Cannot determine pid"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma];;[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]##status##[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]'status')[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]OP=`serverpid`[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]if [ $OP = "0" ]; then[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo "$NAME is stopped"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]exit 1[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]else[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo "$NAME (pid $OP) is running..."[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]exit 0[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]fi[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma];;[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]*)[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]echo "Usage: $0 {start|stop|restart|status|dump}"[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma]exit 1[/FONT][/COLOR]
[COLOR=#000000][FONT=Tahoma];;[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]esac[/FONT][/COLOR]

[COLOR=#000000][FONT=Tahoma]exit $?[/FONT][/COLOR]