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 64 65 66 67 68 69 70 71 72
|
#!/bin/bash
# Start a systemtap server
#
# Copyright (C) 2008, 2009 Red Hat Inc.
#
# This file is part of systemtap, and is free software. You can
# redistribute it and/or modify it under the terms of the GNU General
# Public License (GPL); either version 2, or (at your option) any
# later version.
# This script attempts to start a systemtap server and echoes the
# process id, if successful.
# Initialize the environment
. ${PKGLIBEXECDIR}stap-env
startup_timeout=20
# start the server
${stap_pkglibexecdir}stap-serverd "$@" </dev/null >/dev/null &
server_pid=$!
# Make sure the server is started
for ((attempt=0; $attempt < $startup_timeout; ++attempt))
do
server_started=0
avahi_advertising=0
server_listening=0
# Has the server started?
if ! (ps -e | grep stap-serverd | grep $server_pid) >/dev/null 2>&1; then
# The stap-serverd script should start right away
test $server_started = 0 -a $attempt -gt 1 && break
sleep 1
continue
fi
server_started=1
# Is avahi advertizing the server?
if ! (ps -fe | grep avahi-publish-service | grep $server_pid) > /dev/null 2>&1; then
sleep 1
continue
fi
avahi_advertising=1
# Is the server listening?
if ! (ps -fe | grep stap-server-connect | grep $server_pid) > /dev/null 2>&1; then
sleep 1
continue
fi
server_listening=1
# The server is ready
echo $server_pid
exit 0
done
echo -n "Unable to start a systemtap server: " >&2
if test $server_started = 0; then
echo "${stap_pkglibexecdir}stap-serverd did not start" >&2
elif test $avahi_advertising = 0; then
echo "avahi is not advertising the server" >&2
elif test $server_listening = 0; then
echo "The server could not open a connection to listen on" >&2
fi
# If the server partially started, then kill it.
test $server_started = 1 && ${stap_pkglibexecdir}stap-stop-server $server_pid
exit 1 # server did not start
|