Home | History | Annotate | Download | only in strace
      1 #!/bin/sh
      2 
      3 show_usage()
      4 {
      5 	cat <<__EOF__
      6 Usage: ${0##*/} STRACE_LOG
      7 
      8 Finds all STRACE_LOG.PID files, adds PID prefix to every line,
      9 then combines and sorts them, and prints result to standard output.
     10 
     11 It is assumed that STRACE_LOGs were produced by strace with -tt[t]
     12 option which prints timestamps (otherwise sorting won't do any good).
     13 __EOF__
     14 }
     15 
     16 if [ $# -ne 1 ]; then
     17 	show_usage >&2
     18 	exit 1
     19 elif [ "$1" = '--help' ]; then
     20 	show_usage
     21 	exit 0
     22 fi
     23 
     24 logfile=$1
     25 
     26 for file in "$logfile".*; do
     27 	[ -f "$file" ] || continue
     28 	suffix=${file#"$logfile".}
     29 	[ "$suffix" -gt 0 ] 2> /dev/null ||
     30 		continue
     31 	pid=$(printf "%-5s" $suffix)
     32 	# Some strace logs have last line which is not '\n' terminated,
     33 	# so add extra newline to every file.
     34 	# grep -v '^$' removes empty lines which may result.
     35 	sed "s/^/$pid /" < "$file"
     36 	echo
     37 done \
     38 | sort -s -k2,2 | grep -v '^$'
     39 
     40 rc=$?
     41 [ $rc -eq 1 ] &&
     42 	echo >&2 "${0##*/}: $logfile: strace output not found"
     43 exit $rc
     44