3 # Wrapper to setup a live session on localhost and read it in text mode live
5 SESSION_NAME
="lttngtop-live-simple-$RANDOM"
9 lttng destroy
$SESSION_NAME >/dev
/null
10 rm -rf $HOME/lttng-traces
/$HOSTNAME/${SESSION_NAME}*
14 if test "$1" = "-h" -o "$1" = "--help"; then
15 echo "usage : $0 [OPTIONS] [program [program-options]]"
17 echo " -f, --child Follow threads associated with selected PIDs"
18 echo " -p, --pid Comma-separated list of PIDs to display (in addition to the executed program)"
19 echo " -a, --all In textdump mode, display all events but write in bold the processes we are interested in (-f and -p)"
20 echo " -k, --kprobes kprobes to insert (same format as lttng enable-event, can be repeated)"
21 echo " -o, --output <filename> In textdump, output the log in <filename>"
25 pgrep
-u root lttng-sessiond
>/dev
/null
27 echo "Starting lttng-sessiond as root (trying sudo, start manually if \
29 sudo lttng-sessiond
-d
35 pgrep lttng-relayd
>/dev
/null
37 echo "Starting lttng-relayd as your current user, start manually if \
46 groups|
grep tracing
>/dev
/null
48 echo "You are not a member of the tracing group, so you need root \
49 access, the script will try with sudo"
53 # check if lttng command if in the path
54 # check if the user can execute the command (with sudo if not in tracing group)
55 # check if lttng-modules is installed
56 $SUDO lttng list
-k |
grep sched_switch
>/dev
/null
58 echo "Something went wrong executing \"$SUDO lttng list -k | grep sched_switch\", \
59 try to fix the problem manually and then start the script again"
62 # if our random session name was already in use, add more randomness...
63 $SUDO lttng list |
grep $SESSION_NAME
65 SESSION_NAME
="$SESSION_NAME-$RANDOM"
67 $SUDO lttng list |
grep $SESSION_NAME
69 echo "Cannot create a random session name, something must be wrong"
73 lttng create
$SESSION_NAME --live 1000000 -U net
://localhost
>/dev
/null
74 [[ $?
!= 0 ]] && exit 2
76 trap "destroy" SIGINT SIGTERM
78 lttng enable-event
-s $SESSION_NAME -u -a >/dev
/null
79 lttng add-context
-s $SESSION_NAME -u -t vpid
-t procname
-t vtid
>/dev
/null
81 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
82 [[ $?
!= 0 ]] && exit 2
83 lttng enable-event
-s $SESSION_NAME -k --syscall -a >/dev
/null
84 [[ $?
!= 0 ]] && exit 2
85 lttng add-context
-s $SESSION_NAME -k -t pid
-t procname
-t tid
-t ppid
>/dev
/null
86 [[ $?
!= 0 ]] && exit 2
87 # if you want to add Perf counters, do something like that :
88 #lttng add-context -s $SESSION_NAME -k -t perf:cache-misses -t perf:major-faults -t perf:branch-load-misses >/dev/null
93 while [ "$1" != "" ]; do
94 if test "$1" = "-p"; then
96 LTTNGTOPARGS
="$LTTNGTOPARGS -p $1"
98 elif test "$1" = "-k"; then
100 lttng enable-event
-k -s $SESSION_NAME "probe-$1" --probe $1 >/dev
/null
102 elif test "$1" = "-o"; then
104 LTTNGTOPARGS
="$LTTNGTOPARGS -o $1"
106 elif test "${1:0:1}" = "-"; then
107 LTTNGTOPARGS
="$LTTNGTOPARGS $1"
115 if test ! -z "$PROG"; then
119 lttng start
$SESSION_NAME >/dev
/null
120 [[ $?
!= 0 ]] && exit 2
122 s
=$
(lttngtop
-r net
://localhost |
grep $SESSION_NAME)
123 if test $?
!= 0; then
124 echo "Problem executing lttngtop -r net://localhost | grep $SESSION_NAME"
127 lttngtop
-t -r $
(echo $s|cut
-d' ' -f1) $LTTNGTOPARGS $PROG