diff options
Diffstat (limited to 'stap-start-server')
-rwxr-xr-x | stap-start-server | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/stap-start-server b/stap-start-server index ac31d3bd..ab78fc09 100755 --- a/stap-start-server +++ b/stap-start-server @@ -23,21 +23,47 @@ 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 $server_pid) >/dev/null 2>&1; then - sleep 1 - continue + if ! (ps -e | grep stap-serverd | grep $server_pid) >/dev/null 2>&1; then + 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_exec_prefix}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_exec_prefix}stap-stop-server $server_pid + exit 1 # server did not start |