caught SIGTERM, shutting down randomly after directadmin cron

Nordinho

Verified User
Joined
Aug 24, 2008
Messages
5
Heya,

This bug has been irritating me for quite a while now and I can't seem to find a solution. Apache restarts around 00:11 each day. But sometimes I get the infamous caught sigterm error. And Apache shuts down.

Code:
[Fri Sep 19 00:10:02 2008] [notice] SIGHUP received.  Attempting to restart
[Fri Sep 19 00:10:03 2008] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Fri Sep 19 00:10:03 2008] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Fri Sep 19 00:10:03 2008] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Fri Sep 19 00:10:03 2008] [warn] RSA server certificate CommonName (CN) `www.snakeoil.dom' does NOT match server name!?
[Fri Sep 19 00:10:03 2008] [notice] Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.7a DAV/2 PHP/5.2.6 configured -- resuming normal operations
[Fri Sep 19 00:11:01 2008] [notice] caught SIGTERM, shutting down

No further errors are shown. It happens on random days. Sometimes not for 2 weeks, sometimes 3 times a week. I tried adding an httpd restart in the directadmin cron file (2 minutes after the htppd restart line), however that doesn't work either.

Secondly; my service monitor page in Directadmin panel only shows the reboot option. All other services aren't listed.

Does anyone have any idea's/suggestions? It kinda sucks to have to be around each day around twelve, cause the server might go down...
 
I know this one is the one that happens at that time, but it's just a standard DA one

10 0 * * * root echo 'action=tally&value=all' >> /usr/local/directadmin/data/task.queue

However I can't find that file to see its contents.
 
The task.queue file is dynamic; it contains whatever the cronjob puts into it with those little >> characters.

I believe that action=tally&value=all does restart apache. Does it restart?

Jeff
 
I also see this quite often in my logs and it isn't a problem until I also have Apache running inside a FreeBSD jail on the same system. I think that if action=tally&value=all does shut down Apache it must stop and then start it rather then send a killall -HUP or restarting it with a single command. I frequently notice both the Apache process running on the main system and inside the jail will shut down at exactly the same time but only the Apache process inside the main system will start back up again leaving the jail helpless.

I think this is because ps aux | grep httpd will show processes from both systems, the only difference being the jailed processes will be marked with a J under the STAT collumn.

I have tried modifying the /usr/local/etc/rc.d/httpd script like so (look for the bold text);
Code:
pandora# cat /usr/local/etc/rc.d/httpd
#!/bin/sh
#
# Startup script for the Apache Web Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server.  It is used to serve \
#              HTML files and CGI.
# processname: httpd
# pidfile: /var/run/httpd.pid
# config: /etc/httpd/conf/access.conf
# config: /etc/httpd/conf/httpd.conf
# config: /etc/httpd/conf/srm.conf

ulimit -HSn 32768

# Source function library.
. /usr/local/etc/rc.d/functions

# This will prevent initlog from swallowing up a pass-phrase prompt if
# mod_ssl needs a pass-phrase from the user.
INITLOG_ARGS=""

# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/usr/sbin/apachectl
httpd=/usr/sbin/httpd
prog=httpd
# prog=httpd | [B]grep -v J[/B] # Did not work correctly
RETVAL=0
PIDFILE=/var/run/httpd.pid

# check for 1.3 configuration
check13 () {
        CONFFILE=/etc/httpd/conf/httpd.conf
        GONE="(ServerType|BindAddress|Port|AddModule|ClearModuleList|"
        GONE="${GONE}AgentLog|RefererLog|RefererIgnore|FancyIndexing|"
        GONE="${GONE}AccessConfig|ResourceConfig)"
        if grep -Eiq "^[[:space:]]*($GONE)" $CONFFILE; then
                echo
                echo 1>&2 " Apache 1.3 configuration directives found"
                echo 1>&2 " please read @docdir@/migration.html"
                failure "Apache 1.3 config directives test"
                echo
                exit 1
        fi
}

# The semantics of these two functions differ from the way apachectl does
# things -- attempting to start while running is a failure, and shutdown
# when not running is also a failure.  So we just do it the way init scripts
# are expected to behave here.
start() {
        echo -n "Starting $prog: "
        check13 || exit 1
        daemon $httpd -k start -DSSL
        RETVAL=$?
        if [ $RETVAL = 0 ] && touch /var/spool/lock/httpd
        then
                echo -e "\t[ OK ]";
        else
                echo -e "\t[ FAILED ]";
        fi
        return $RETVAL
}
waitforexit() {
        count=${2:-30}
        while [ 0$count -gt 0 ]
        do
                PIDS=`ps -ax | [B]grep -v J[/B] | grep -v grep | grep -c /usr/sbin/httpd` || break
                echo Remaining processes: $PIDS
                stop
                sleep 2
                count=`expr $count - 1`
        done
        if [ 0$count -eq 0 ];
        then
                echo Remaining processes: $PIDS
                return 1
        fi
        return 0
}
stop() {
        echo -n "Stopping $prog: "
        killall $prog | [B]grep -v J[/B] 2> /dev/null
        ps aux | [B]grep -v J[/B] | grep apache | awk '{ print $2 }' | xargs kill -9
        RETVAL=$?
        if [ $RETVAL = 0 ] && rm -f /var/spool/lock/httpd $PIDFILE
        then
                echo -e "\t[ OK ]";
        else
                echo -e "\t[ FAILED ]";
        fi
}
reload() {
        echo -n "Reloading $prog: "
        check13 || exit 1
        killall -HUP $prog | [B]grep -v J[/B]
        RETVAL=$?
        if [ $RETVAL = 0 ]
        then
                echo -e "\t[ OK ]";
        else
                echo -e "\t[ FAILED ]";
        fi
}

# See how we were called.
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  status)
        status $httpd
        RETVAL=$?
        ;;
  restart)
        stop
        waitforexit "httpd" 20
        start
        ;;
  condrestart)
        if [ -f $PIDFILE ] ; then
                stop
                start
        fi
        ;;
  reload)
        reload
        ;;
  help|configtest|graceful|fullstatus)
        $apachectl $@
        RETVAL=$?
        ;;
  test)
        echo `moduleargs`;
        ;;
  *)
        echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
        exit 1
esac

exit $RETVAL

The changes to this code meant that I could now execute
# /usr/local/etc/rc.d/httpd/(start/stop/reload/etc.)
without touching the jailed Apache processes at all.

However, as I first explained this does not stop DirectAdmin (?) from running a cron to shut down all Apache processes weather running inside a jail or not. I don't suppose anyone has a fix?
 
Back
Top