On 16/02/2008, Greg Smith <gsmith@gregsmith.com> wrote:
> top -bc | tee topdata
>
> That will save everything to a file called topdata while also letting you
> watch it scroll by. Not as easy to catch the bad periods that way, the
> output is going to be a huge data file, but you'll have a log to sort
> through of everything. Control-C to get out of there when you're bored.
Or pipe through the following awk-script to make the output
less overwhelming ... save it as top.awk
BEGIN{
# the sort numerically sorts by memory usage percentage
# head filters out the top 20 contenders
command = "LC_ALL=C sort -k 10,10gr|head -20"
}
{
# read all of top into an array
line[NR]=$0
last=NR
}
END{
# print the header well-formed
for(i=1;i<8;i++){
print line[i]
}
# and do the sort & strip of the processes
for(i=8;i<last;i++){
print line[i]|& command
}
close(command, "to")
while ((command |& getline out) > 0)
print out
close(command)
}
Invoke like so
top -b -d 1 | awk -f top.awk | tee topdata
Instead of the "getting bored Ctrl-C" maybe a "-n 3600" as
extra parameter to top to get roughly one hours worth of data...
Cheers,
Andrej