blob: 9dc03b89c8ebf9975c470cb84b675d6de92e75f0 [file] [log] [blame]
Denys Vlasenkoda3657d2012-03-09 13:43:44 +01001#!/bin/sh
Denys Vlasenkoda3657d2012-03-09 13:43:44 +01002
3if test $# = 0; then
Dmitry V. Levin63c5e632012-03-10 16:10:06 +00004 cat >&2 <<__EOF__
5Usage: ${0##*/} STRACE_LOG
6
Denys Vlasenkoda3657d2012-03-09 13:43:44 +01007Finds all STRACE_LOG.PID files, adds PID prefix to every line,
8then combines and sorts them, and prints result to standard output.
9
10It is assumed that STRACE_LOGs were produced by strace with -tt[t]
Dmitry V. Levin63c5e632012-03-10 16:10:06 +000011option which prints timestamps (otherwise sorting won't do any good).
12__EOF__
13 exit 1
Denys Vlasenkoda3657d2012-03-09 13:43:44 +010014fi
15
Denys Vlasenkoda3657d2012-03-09 13:43:44 +010016logfile=$1
17pfxlen=${#1}
18
19for file in "$logfile".*; do
Dmitry V. Levin63c5e632012-03-10 16:10:06 +000020 [ -f "$file" ] || continue
Denys Vlasenkoda3657d2012-03-09 13:43:44 +010021 suffix=${file:1+$pfxlen}
Dmitry V. Levin63c5e632012-03-10 16:10:06 +000022 [ "$suffix" -gt 0 ] 2> /dev/null || {
Denys Vlasenkoda3657d2012-03-09 13:43:44 +010023 echo "Skipped file '$file' (bad suffix)" >&2
24 continue
25 }
26 pid=$(printf "%-5s" $suffix)
Dmitry V. Levin63c5e632012-03-10 16:10:06 +000027 # Some strace logs have last line which is not '\n' terminated,
28 # so add extra newline to every file.
Denys Vlasenkoda3657d2012-03-09 13:43:44 +010029 # grep -v '^$' removes empty lines which may result.
Dmitry V. Levin63c5e632012-03-10 16:10:06 +000030 sed "s/^/$pid /" < "$file"
31 echo
Denys Vlasenkoda3657d2012-03-09 13:43:44 +010032done \
33| grep -v '^$' | sort -k2