Syndicate
Site (RSS, Atom)
Contact
Weblog status
Total entries: 78
Last entry: 2022-10-16 13:52:24
Last updated: 2022-10-16 14:12:58
powered by vim, bash, cat, grep, sed, and nb 3.4.2

2011-05-17 21:25:01

Apache und MySQL supervised

Unter notfall-sshd_oom-resistent steht beschrieben, wie man sshd supervised (mit den daemontools von DJB) betreibt. Dieser Post zeigt Beispiele, wie auch Apache und MySQL unter der Kontrolle von supervise laufen.

Apache

> ps axuwf|...
/command/svscan /service/
 \_ supervise apache-sv
    \_ /usr/sbin/apache2 -f /etc/httpd/httpd.conf -D FOREG..
> cat /service/apache-sv/run 
#!/bin/bash

exec 2>&1
# don't respawn too fast
sleep 1

# in case that apache lost his father "supervise" kill the
# procs
ps axuwf |grep -v grep \
  |grep ' /usr/sbin/apache2 ' \
  |awk '{print$2}' \
  |xargs -r kill -TERM

exec /usr/sbin/apache2 -f /etc/httpd/httpd.conf -D FOREGROUND

MySQL

#!/bin/bash

export PATH=/command:$PATH:/usr/local/bin:/usr/local/sbin

PROC_PATTERN=usr.sbin.mysqld
MAX_KILL_ATTEMPTS=20
SCRIPT=$(pwd)/$0

get_pid() {
  PID=$(/bin/ps axwf \
        |grep $PROC_PATTERN|grep -v grep\
        |awk '{print$1}' 2>/dev/null)
}
kill_procs() {
  COUNT=0
  get_pid
  while [ "$PID" ]
  do
    kill -TERM $PID 2>/dev/null
    let COUNT=COUNT+1
    [ "$COUNT" -gt $MAX_KILL_ATTEMPTS ] \
      && kill -9 $PID 2>/dev/null
    sleep 3
    get_pid
  done
}

# we must be sure: kill all remaining procs
kill_procs

# this should never be reached, otherwise there are 
# maybe too many databases/tables on this host
ulimit -n 250000

exec /usr/sbin/mysqld \
  --defaults-file=/etc/mysql/my.cnf \
  --basedir=/usr \
  --datadir=/var/lib/mysql \
  --pid-file=/var/run/mysqld/mysqld.pid \
  --socket=/var/run/mysqld/mysqld.sock

Posted by Frank W. Bergmann | Permanent link | File under: shell, http, apache