Situazione: ho tomcat come application server e ho queste esigenze: vorrei che fosse un demone/servizio e che sia monitorato.
Procedimento : per il monitoring ho usato monit che da inesperto non mi pare male. Per trattarlo come servizio mi sono fatto uno scrptino e poi piazzato con metodo classico sotto sia init.d e poi ho utilizzato update-rc.d per farlo partire allo startup.
Problema : non so per quale ragione quando faccio il kill di questo servizio il .pid file non viene cancellato, mentre se faccio un normale kill su qualsiasi altro demone il pid viene cancellato. La cancellazione del pid per me è importante perchè da quanto ho capito il watchdog monit va ad agire proprio sul file pid.
Qualche idea?
Un saluto a tutti
Questo è lo script che ho utilizzato per gestire tomcat come servizio
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="PUAG Service"
NAME="tomcat"
DAEMON_START=/usr/local/tomcat/bin/startup.sh
DAEMON_STOP=/usr/local/tomcat/bin/shutdown.sh
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/puagscript
#the user that will run the script
USER=puaguser
# NO NEED TO MODIFY THE LINES BELOW
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
startService()
{
#se c'è il pid dico che il daemon is running altrimenti faccio partire lo startup.sh
start-stop-daemon -b --start -p $PIDFILE --exec $DAEMON_START
RETVAL="$?"
return "$RETVAL"
}
#
# Function that stops the daemon/service
#
stopService()
{
#se non c'è il pid dico che il daemon is not running altrimenti faccio partire lo shutdown.sh
start-stop-daemon --stop -p $PIDFILE
RETVAL="$?"
rm -f $PIDFILE
return "$RETVAL"
}
function main {
# rc_reset
case "$1" in
start) # starts the Java program as a Linux service
startService
;;
stop) # stops the Java program service
stopService
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
}
main $1





Quando dici kill intendi proprio un
kill -9o piuttosto/etc/init.d/XXX stop? Nel primo caso, non vedo chi dovrebbe cancellare il file .pid, nel secondo dovrebbe funzionare.