Feng 10 سال پیش
والد
کامیت
aec571a0b0
1فایلهای تغییر یافته به همراه117 افزوده شده و 0 حذف شده
  1. 117 0
      rel/files/emqttd_top

+ 117 - 0
rel/files/emqttd_top

@@ -0,0 +1,117 @@
+#!/bin/sh
+# -*- tab-width:4;indent-tabs-mode:nil -*-
+# ex: ts=4 sw=4 et
+
+# /bin/sh on Solaris is not a POSIX compatible shell, but /usr/bin/ksh is.
+if [ `uname -s` = 'SunOS' -a "${POSIX_SHELL}" != "true" ]; then
+    POSIX_SHELL="true"
+    export POSIX_SHELL
+    # To support 'whoami' add /usr/ucb to path
+    PATH=/usr/ucb:$PATH
+    export PATH
+    exec /usr/bin/ksh $0 "$@"
+fi
+unset POSIX_SHELL # clear it so if we invoke other scripts, they run as ksh as well
+
+RUNNER_SCRIPT_DIR={{runner_script_dir}}
+RUNNER_SCRIPT=${0##*/}
+
+RUNNER_BASE_DIR={{runner_base_dir}}
+RUNNER_ETC_DIR={{runner_etc_dir}}
+RUNNER_LIB_DIR={{platform_lib_dir}}
+RUNNER_USER={{runner_user}}
+
+WHOAMI=$(whoami)
+
+# Make sure this script is running as the appropriate user
+if ([ "$RUNNER_USER" ] && [ "x$WHOAMI" != "x$RUNNER_USER" ]); then
+    type sudo > /dev/null 2>&1
+    if [ $? -ne 0 ]; then
+        echo "sudo doesn't appear to be installed and your EUID isn't $RUNNER_USER" 1>&2
+        exit 1
+    fi
+    echo "Attempting to restart script through sudo -H -u $RUNNER_USER" >&2
+    exec sudo -H -u $RUNNER_USER -i $RUNNER_SCRIPT_DIR/$RUNNER_SCRIPT $@
+fi
+
+# Make sure CWD is set to runner base dir
+cd $RUNNER_BASE_DIR
+
+# Extract the target node name from node.args
+NAME_ARG=`egrep "^ *-s?name" $RUNNER_ETC_DIR/vm.args`
+if [ -z "$NAME_ARG" ]; then
+    echo "vm.args needs to have either -name or -sname parameter."
+    exit 1
+fi
+
+# Learn how to specify node name for connection from remote nodes
+echo "$NAME_ARG" | grep '^-sname' > /dev/null 2>&1
+if [ "X$?" = "X0" ]; then
+    NAME_PARAM="-sname"
+    NAME_HOST=""
+else
+    NAME_PARAM="-name"
+    echo "$NAME_ARG" | grep '@.*' > /dev/null 2>&1
+    if [ "X$?" = "X0" ]; then
+        NAME_HOST=`echo "${NAME_ARG}" | sed -e 's/.*\(@.*\)$/\1/'`
+    else
+        NAME_HOST=""
+    fi
+fi
+
+# Extract the target cookie
+COOKIE_ARG=`grep '\-setcookie' $RUNNER_ETC_DIR/vm.args`
+if [ -z "$COOKIE_ARG" ]; then
+    echo "vm.args needs to have a -setcookie parameter."
+    exit 1
+fi
+
+# Identify the script name
+SCRIPT=`basename $0`
+
+# Parse out release and erts info
+START_ERL=`cat $RUNNER_BASE_DIR/releases/start_erl.data`
+ERTS_VSN=${START_ERL% *}
+APP_VSN=${START_ERL#* }
+
+# Add ERTS bin dir to our path
+ERTS_PATH=$RUNNER_BASE_DIR/erts-$ERTS_VSN/bin
+
+NODE_NAME=${NAME_ARG#* }
+
+# Setup command to control the node
+NODETOOL="$ERTS_PATH/escript $ERTS_PATH/nodetool $NAME_ARG $COOKIE_ARG"
+
+RES=`$NODETOOL ping`
+if [ "$RES" != "pong" ]; then
+    echo "Node is not running!"
+    exit 1
+fi
+
+case "$1" in
+    runtime)
+        SORTBY="runtime"
+        ;;
+    reductions)
+        SORTBY="reductions"
+        ;;
+    memory)
+        SORTBY="memory"
+        ;;
+    msg_q)
+        SORTBY="msg_q"
+        ;;
+    *)
+        echo "Usage: $SCRIPT {runtime | reductions | memory | msg_q}"
+        exit 1
+        ;;
+esac
+
+MYPID=$$
+ETOP_ARGS="-sort $SORTBY -interval 10 -lines 100 -tracing off"
+$ERTS_PATH/erl -noshell -noinput \
+    -pa $RUNNER_LIB_DIR/basho-patches \
+    -hidden $NAME_PARAM emqttd_top$MYPID$NAME_HOST $COOKIE_ARG \
+    -s etop -s erlang halt -output text \
+    -node $NODE_NAME $ETOP_ARGS
+