File: kill_server.sh.cmake

package info (click to toggle)
tango 10.0.2%2Bdfsg1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 89,936 kB
  • sloc: cpp: 201,786; sh: 1,645; python: 953; java: 800; perl: 467; javascript: 447; xml: 325; makefile: 272; sql: 72; ruby: 24
file content (36 lines) | stat: -rwxr-xr-x 786 bytes parent folder | download | duplicates (4)
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
#! /usr/bin/env bash
# vim: syntax=sh

export SHELLOPTS
set -o errexit
set -o nounset

export server_pids="${TANGO_TEST_CASE_DIRECTORY}/server_pids"
export pids=$(sed -e "/dead/d" "${server_pids}" | tr '\n' ' ')

function wait_pids() {
    local dead=
    while [[ $(echo $pids | wc -w) -gt $(echo $dead | wc -w) ]]; do
        dead=
        for pid in $pids; do
            if ! ps --pid $pid &>/dev/null; then
                sed -i "/$pid/ s/$/ dead/" ${server_pids}
                dead="$dead $pid"
            fi
        done
        sleep 0.1s
    done
}
export -f wait_pids

if [[ -z "$pids" ]]; then
    echo "No device servers to kill"
    exit
fi

echo "Killing PIDs: $pids"
kill -s TERM $pids
timeout 5s bash -c wait_pids
if [[ $? -eq 124 ]]; then
    kill -s KILL $pids
fi