Dmitry V. Levin
63c5e63f2c
* strace-log-merge: Redirect usage to stderr, make the check for numeric suffix simpler.
34 lines
831 B
Bash
Executable File
34 lines
831 B
Bash
Executable File
#!/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
|