rename to avoid eventual clash for a future lttngtrace
[lttngtop.git] / utils / lttngtoptrace
diff --git a/utils/lttngtoptrace b/utils/lttngtoptrace
new file mode 100755 (executable)
index 0000000..5486d90
--- /dev/null
@@ -0,0 +1,134 @@
+#!/bin/bash
+
+# Wrapper to setup a live session on localhost and read it in text mode live
+
+SESSION_NAME="lttngtop-live-simple-$RANDOM"
+
+destroy()
+{
+       lttng destroy $SESSION_NAME >/dev/null
+       rm -rf $HOME/lttng-traces/$HOSTNAME/${SESSION_NAME}*
+       exit 0
+}
+
+if test "$1" = "-h" -o "$1" = "--help"; then
+       echo "usage : $0 [OPTIONS] [program [program-options]]"
+       echo "OPTIONS :"
+       echo "  -f             Follow threads associated with selected PIDs"
+       echo "  -p             Comma-separated list of PIDs to display (in addition to the eventual executed program)"
+       echo "  -n             Comma-separated list of procnames to display (in addition to the eventual executed program)"
+       echo "  -a             In textdump mode, display all events but write in bold the processes we are interested in (-f and -p)"
+       echo "  -k             kprobes to insert (same format as lttng enable-event, can be repeated)"
+       echo "  -o <filename>  In textdump, output the log in <filename>"
+       exit 0
+fi
+
+pgrep -u root lttng-sessiond >/dev/null
+if test $? != 0; then
+       echo "Starting lttng-sessiond as root (trying sudo, start manually if \
+it fails)"
+       sudo lttng-sessiond -d
+       if test $? != 0; then
+               exit 1
+       fi
+fi
+
+pgrep lttng-relayd >/dev/null
+if test $? != 0; then
+       echo "Starting lttng-relayd as your current user, start manually if \
+it fails"
+       lttng-relayd -d
+       if test $? != 0; then
+               exit 1
+       fi
+fi
+
+SUDO=""
+groups|grep tracing >/dev/null
+if test $? != 0; then
+       echo "You are not a member of the tracing group, so you need root \
+access, the script will try with sudo"
+       SUDO="sudo"
+fi
+
+# check if lttng command if in the path
+# check if the user can execute the command (with sudo if not in tracing group)
+# check if lttng-modules is installed
+$SUDO lttng list -k | grep sched_switch >/dev/null
+if test $? != 0; then
+       echo "Something went wrong executing \"$SUDO lttng list -k | grep sched_switch\", \
+try to fix the problem manually and then start the script again"
+fi
+
+# if our random session name was already in use, add more randomness...
+$SUDO lttng list | grep $SESSION_NAME
+if test $? = 0; then
+       SESSION_NAME="$SESSION_NAME-$RANDOM"
+fi
+$SUDO lttng list | grep $SESSION_NAME
+if test $? = 0; then
+       echo "Cannot create a random session name, something must be wrong"
+       exit 2
+fi
+
+lttng create $SESSION_NAME --live 1000000 -U net://localhost >/dev/null
+[[ $? != 0 ]] && exit 2
+
+trap "destroy" SIGINT SIGTERM
+
+lttng enable-event -s $SESSION_NAME -u -a >/dev/null
+lttng add-context -s $SESSION_NAME -u -t vpid -t procname -t vtid >/dev/null
+
+lttng enable-event -s $SESSION_NAME -k lttng_statedump_start,lttng_statedump_end,lttng_statedump_process_state,lttng_statedump_file_descriptor,lttng_statedump_vm_map,lttng_statedump_network_interface,lttng_statedump_interrupt,sched_process_free,sched_switch,sched_process_fork >/dev/null
+[[ $? != 0 ]] && exit 2
+lttng enable-event -s $SESSION_NAME -k --syscall -a >/dev/null
+[[ $? != 0 ]] && exit 2
+lttng add-context -s $SESSION_NAME -k -t pid -t procname -t tid -t ppid >/dev/null
+[[ $? != 0 ]] && exit 2
+# if you want to add Perf counters, do something like that :
+#lttng add-context -s $SESSION_NAME -k -t perf:cache-misses -t perf:major-faults -t perf:branch-load-misses >/dev/null
+
+LTTNGTOPARGS=""
+PROG=""
+
+while [ "$1" != "" ]; do
+       if test "$1" = "-p"; then
+               shift
+               LTTNGTOPARGS="$LTTNGTOPARGS -p $1"
+               shift
+       elif test "$1" = "-k"; then
+               shift
+               lttng enable-event -k -s $SESSION_NAME "probe-$1" --probe $1 >/dev/null
+               shift
+       elif test "$1" = "-o"; then
+               shift
+               LTTNGTOPARGS="$LTTNGTOPARGS -o $1"
+               shift
+       elif test "$1" = "-n"; then
+               shift
+               LTTNGTOPARGS="$LTTNGTOPARGS -n $1"
+               shift
+       elif test "${1:0:1}" = "-"; then
+               LTTNGTOPARGS="$LTTNGTOPARGS $1"
+               shift
+       else
+               PROG=$@
+               break
+       fi
+done
+
+if test ! -z "$PROG"; then
+       PROG="-- $PROG"
+fi
+
+lttng start $SESSION_NAME >/dev/null
+[[ $? != 0 ]] && exit 2
+
+s=$(lttngtop -r net://localhost | grep $SESSION_NAME)
+if test $? != 0; then
+       echo "Problem executing lttngtop -r net://localhost | grep $SESSION_NAME"
+       exit 1
+fi
+lttngtop -t -r $(echo $s|cut -d' ' -f1) $LTTNGTOPARGS $PROG
+
+destroy
This page took 0.023818 seconds and 4 git commands to generate.