[asterisk-users] Queue_logs
Steve Edwards
asterisk.org at sedwards.com
Sun Sep 13 13:28:22 CDT 2009
On Sun, 13 Sep 2009, Matthew J. Roth wrote:
> Here's a Bash script that will do what you're looking for. If you
> redirect the output to a file it will only contain the queue_log records
> in the date range from start_epoch to end_epoch. Note that it may take
> a while to complete, depending on the size of your queue_log.
>
> --- Start getdates_ql
> ----------------------------------------------------------
> #!/bin/bash
>
> start_epoch=`date -d 'Sep 9 2009 00:00:00' +'%s'`
> end_epoch=`date -d 'Sep 12 2009 23:59:59' +'%s'`
>
> while read line; do
> epoch=`echo $line | cut -d '|' -f 1`
>
> if [ $epoch -ge $start_epoch -a $epoch -le $end_epoch ]; then
> echo $line
> fi
> done < /var/log/asterisk/queue_log
>
> exit 0
>
> --- End getdates_ql
> ------------------------------------------------------------
You can speed up this script by nearly an order of magnitude by extracting
the epoch more efficiently. The method in this script creates 3 processes
for every line in the queue log. You can replace that single step with:
epoch=${line:0:10}
Since it is unlikely that any of us will live to see an eleven digit epoch
(about 300 years from now), this should be an acceptable simplification.
If you plan on living that long, you could to a substring to find the
pipe, blah, blah, blah. The boost is because you aren't spending most of
your time creating processes.
If this is a function you do frequently, re-coding in C is trivial and
even more significant -- reducing the run-time on my over-priced and
under-powered Fit-PC (500MHZ AMD Geode) from 82 seconds to 0.03 seconds
(2,700 times faster) for a 10,000 line queue file.
-dt-ext::sedwards:~$ time ./getdates-ql >/dev/null
real 1m22.234s
user 0m30.027s
sys 0m51.467s
-dt-ext::sedwards:~$ time ./getdates-ql2 >/dev/null
real 0m10.207s
user 0m9.921s
sys 0m0.148s
-dt-ext::sedwards:~$ time ./getdates-qlc >/dev/null
real 0m0.033s
user 0m0.029s
sys 0m0.004s
--
Thanks in advance,
-------------------------------------------------------------------------
Steve Edwards sedwards at sedwards.com Voice: +1-760-468-3867 PST
Newline Fax: +1-760-731-3000
More information about the asterisk-users
mailing list