summaryrefslogtreecommitdiffstats
path: root/roles/stream/templates/on-disconnect
blob: 15ae31b8979ed23e98f1e0b75c486c83706bd5af (plain) (blame)
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
#!/bin/bash
set -e
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
PIDFILE="{{ icecast_restream_dir }}/{{ emacsconf_id }}-lowres-{{ item.id }}.pid"

. /lib/lsb/init-functions

#We need this function to ensure the whole process tree will be killed
killtree() {
    local _pid=$1
    local _sig=${2-TERM}
    for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
        killtree ${_child} ${_sig}
    done
    kill -${_sig} ${_pid}
}

stop() {
  echo "Stopping $DESC... "
  if test -f $PIDFILE; then
    while test -d /proc/$(cat $PIDFILE); do
      killtree $(cat $PIDFILE) 15
      sleep 0.5
    done
    rm $PIDFILE
  fi
  echo "done"
}