#!/bin/sh # chkconfig: 345 85 60 # description: Totvs appserver. # processname: appserver ### BEGIN INIT INFO # Provides: appserver # Required-Start: $network # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Totvs appserver start/stop script. # Description: Totvs appserver daemon. ### END INIT INFO # Author: Renan Fragoso . /etc/rc.d/init.d/functions PIDFILE=/var/run/appserver.pid DAEMON=${INSTALL_PATH}/protheus/bin/appserver/appsrvlinux appserver_start(){ # Declara variavel de ambiente para carga de libs .so export LD_LIBRARY_PATH="${INSTALL_PATH}/protheus/bin/appserver:"$LD_LIBRARY_PATH # ulimits podem ser adicionados ao /etc/security/limits.con (ou equivalente) # e posteriormente adicionada chamada do pam_limits.so no arquivo/etc/pam.d/common-session # (realizar este procedimento com cautela pois pode danificar o login na maquina) #ulimit -n 32768 #ulimit -s 1024 #ulimit -m 2048000 #ulimit -v 2048000 daemon --pidfile $PIDFILE $DAEMON daemon > /dev/null return $? } appserver_stop(){ killproc -p $PIDFILE -TERM $DAEMON RETVAL=$? return $RETVAL } appserver_restart(){ STATS=`status -p $PIDFILE appsrvlinux -q | grep running` if [ -n "$STATS" ]; then echo -n "Stopping Appserver ..." appserver_stop case "$?" in 0) success echo "" #sleep 5 ;; 1|2) failure exit 1 ;; esac fi #aguarda o tempo do stop echo -n "Starting Appserver ..." for (( n=1; n<15; n++ )) do PID=`cat $PIDFILE > /dev/null 2>&1` STATS=`ps h -o comm,pid | grep appsrvlinux | awk '{print $2}' | grep "$PID"` > /dev/null if [ -z $STATS ]; then rm -f $PIDFILE appserver_start case "$?" in 0) success update_pid echo "" ;; 1|2) failure ;; esac n=20 else echo -n "." sleep 1 fi done } update_pid(){ #forca o update do PID para o valor correto pois o appserver faz fork de thread STRTOF=$(echo "$DAEMON" | sed -e 's/\//\\\//g') PID=`ps xh -o pid,cmd | sed -n {/$STRTOF/p} | awk '{print $1}'` if [ -n "$PID" ]; then echo $PID > $PIDFILE fi } case "$1" in start) echo -n "Starting Appserver ..." appserver_start case "$?" in 0) update_pid success ;; 1|2) failure ;; esac echo "" ;; stop) echo -n "Stopping Appserver ..." appserver_stop case "$?" in 0) success rm -f $PIDFILE ;; 1|2) failure ;; esac echo "" ;; restart) echo "Restarting Appserver ..." appserver_restart ;; status) status -p $PIDFILE appsrvlinux ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac exit 0