summaryrefslogtreecommitdiff
path: root/extra/memcached/memcached.sh
blob: 9c97275078791ba865ba8e62fcf48793523bf12b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/bash

. /etc/rc.conf
. /etc/rc.d/functions
. /etc/conf.d/memcached

PIDFILE='/var/run/memcached.pid'

getpid() {
  local pid
  pid=$(cat $PIDFILE 2>/dev/null)
  # if the process is no longer valid, don't return it
  if [ -n "$pid" ]; then
    if ! ps -p $pid >/dev/null; then
      rm -f $PIDFILE
      pid=""
    fi
  fi
  echo $pid
}

PID="$(getpid)"

case "$1" in
  start)
    stat_busy "Starting memcached"
    # memcached is retarded and doesn't write to the pidfile
    # before it drops permissions
    if [ -n "$PID" ]; then
      stat_fail
    elif [ -z "$MEMCACHED_USER"  ]; then
      echo "MEMCACHED_USER must be defined in /etc/conf.d/memcached"
      stat_fail
    else
      touch $PIDFILE && chown $MEMCACHED_USER $PIDFILE
      /usr/bin/memcached -d -P $PIDFILE -u $MEMCACHED_USER $MEMCACHED_ARGS
      if [ $? -gt 0 ]; then
        stat_fail
      else
        add_daemon memcached
        stat_done
      fi
    fi
    ;;
  stop)
    stat_busy "Stopping memcached"
    [ ! -z "$PID" ] && kill $PID &> /dev/null
    if [ $? -gt 0 ]; then
      stat_fail
    else
      rm -f $PIDFILE
      rm_daemon memcached
      stat_done
    fi
    ;;
  restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  *)
    echo "usage: $0 {start|stop|restart}"
esac