Writing a CPU/RAM usage log over a period of time to file on CentOS

I'm looking for an application or line of code that would let me observe a process, save the info in a number of variables, then put the gathered info on a file.

I've been trying with variations of top but no luck. I am running several CentOS virtual servers, VM is a 2GB RAM, 2 processor.

A script that works over a specified amount of time while writing lines with the info on a text file so at the end I can have a sort of table with the data would work.

I'm going to stress test the server, and I would like to have the data to make some statistics.


Solution 1:

The standard ps is enough.

while true; do ps o pcpu,rsz -p $pid | tail -n1 >>usage.log; sleep $interval; done

result:

0.0  3352
0.3 31640
0.4 36924
0.5 36052
...

First field is CPU usage in %, second is physical memory usage in kbytes.

Solution 2:

If you care about precise timing and want CPU in percentage:

watch --precise -n 1 'top -b -n 1 -p [PID] | tail -n 1 | awk "{print \$9}" >> [PID].log'

Solution 3:

I would suggest sadc / sar.