-#!/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