How to capture the output of a top command in a file in linux?

Viewed 113118

I want to write the output of a specific 'top' command to a file. I did some googling and find out that it can be done by using the following command.

top -n 10 -b > top-output.txt

where -n is to specify the number of iterations and -b is for batch mode. This works very well if let top for the 10 iterations. But if i break the running of the command with a Ctrl-C, the output file seems to be empty.

I won't be knowing the number of iterations beforehand, so i need to break it manually. How can i capture the output of top in a file without specifying iterations?

The command which I am trying to use precisely is

top -b | grep init > top-output.txt

and break it whenever i want. But it doesn't work.

EDIT: To give more context to the question, I have a Java Code which invokes a tool with an Input File. As in the tool takes a file as an input and runs for some time, then takes the next file and so on. I have a set of 100,000 files which need to be fed to the tool. So now I am trying to monitor that specific tool ( It runs as a process in Linux). I cannot capture the whole of 'top' s data as the file as would be too huge with unwanted data. How to capture the system stats of just that process and write it to a file using top?

11 Answers

Set the -n argument to 1 it tells top how many frames it will produce before exits.

top -b -n 1 > ~/mytopview.txt

or even

myvar=`top -b -n 1`
echo $myvar
Related