strace/strace-log-merge

34 lines
831 B
Plaintext
Raw Normal View History

#!/bin/sh
if test $# = 0; then
cat >&2 <<__EOF__
Usage: ${0##*/} STRACE_LOG
Finds all STRACE_LOG.PID files, adds PID prefix to every line,
then combines and sorts them, and prints result to standard output.
It is assumed that STRACE_LOGs were produced by strace with -tt[t]
option which prints timestamps (otherwise sorting won't do any good).
__EOF__
exit 1
fi
logfile=$1
pfxlen=${#1}
for file in "$logfile".*; do
[ -f "$file" ] || continue
suffix=${file:1+$pfxlen}
[ "$suffix" -gt 0 ] 2> /dev/null || {
echo "Skipped file '$file' (bad suffix)" >&2
continue
}
pid=$(printf "%-5s" $suffix)
# Some strace logs have last line which is not '\n' terminated,
# so add extra newline to every file.
# grep -v '^$' removes empty lines which may result.
sed "s/^/$pid /" < "$file"
echo
done \
| grep -v '^$' | sort -k2