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 Follow threads associated with selected PIDs"
18 echo " -p Comma-separated list of PIDs to display (in addition to the eventual executed program)"
19 echo " -n Comma-separated list of procnames to display (in addition to the eventual executed program)"
20 echo " -a In textdump mode, display all events but write in bold the processes we are interested in (-f and -p)"
21 echo " -k kprobes to insert (same format as lttng enable-event, can be repeated)"
22 echo " -o <filename> In textdump, output the log in <filename>"
26 pgrep
-u root lttng-sessiond
>/dev
/null
28 echo "Starting lttng-sessiond as root (trying sudo, start manually if \
30 sudo lttng-sessiond
-d
36 pgrep lttng-relayd
>/dev
/null
38 echo "Starting lttng-relayd as your current user, start manually if \
47 groups|
grep tracing
>/dev
/null
49 echo "You are not a member of the tracing group, so you need root \
50 access, the script will try with sudo"
54 # check if lttng command if in the path
55 # check if the user can execute the command (with sudo if not in tracing group)
56 # check if lttng-modules is installed
57 $SUDO lttng list
-k |
grep sched_switch
>/dev
/null
59 echo "Something went wrong executing \"$SUDO lttng list -k | grep sched_switch\", \
60 try to fix the problem manually and then start the script again"
63 # if our random session name was already in use, add more randomness...
64 $SUDO lttng list |
grep $SESSION_NAME
66 SESSION_NAME
="$SESSION_NAME-$RANDOM"
68 $SUDO lttng list |
grep $SESSION_NAME
70 echo "Cannot create a random session name, something must be wrong"
74 lttng create
$SESSION_NAME --live 1000000 -U net
://localhost
>/dev
/null
75 [[ $?
!= 0 ]] && exit 2
77 trap "destroy" SIGINT SIGTERM
79 lttng enable-event
-s $SESSION_NAME -u -a >/dev
/null
80 lttng add-context
-s $SESSION_NAME -u -t vpid
-t procname
-t vtid
>/dev
/null
82 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
83 [[ $?
!= 0 ]] && exit 2
84 lttng enable-event
-s $SESSION_NAME -k --syscall -a >/dev
/null
85 [[ $?
!= 0 ]] && exit 2
86 lttng add-context
-s $SESSION_NAME -k -t pid
-t procname
-t tid
-t ppid
>/dev
/null
87 [[ $?
!= 0 ]] && exit 2
88 # if you want to add Perf counters, do something like that :
89 #lttng add-context -s $SESSION_NAME -k -t perf:cache-misses -t perf:major-faults -t perf:branch-load-misses >/dev/null
94 while [ "$1" != "" ]; do
95 if test "$1" = "-p"; then
97 LTTNGTOPARGS
="$LTTNGTOPARGS -p $1"
99 elif test "$1" = "-k"; then
101 lttng enable-event
-k -s $SESSION_NAME "probe-$1" --probe $1 >/dev
/null
103 elif test "$1" = "-o"; then
105 LTTNGTOPARGS
="$LTTNGTOPARGS -o $1"
107 elif test "$1" = "-n"; then
109 LTTNGTOPARGS
="$LTTNGTOPARGS -n $1"
111 elif test "${1:0:1}" = "-"; then
112 LTTNGTOPARGS
="$LTTNGTOPARGS $1"
120 if test ! -z "$PROG"; then
124 lttng start
$SESSION_NAME >/dev
/null
125 [[ $?
!= 0 ]] && exit 2
127 s
=$
(lttngtop
-r net
://localhost |
grep $SESSION_NAME)
128 if test $?
!= 0; then
129 echo "Problem executing lttngtop -r net://localhost | grep $SESSION_NAME"
132 lttngtop
-t -r $
(echo $s|cut
-d' ' -f1) $LTTNGTOPARGS $PROG