Pradep Pradep - 1 month ago 13
Linux Question

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

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 wont be knowing the number of iterations before hand, so i need to break it manually. How can i capture the output of top in a file without specifying iterations ?

The command which iam trying to use precisely is

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


and break it whenever i want. But it doesnt 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 a 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 ?

Answer

for me top -b > test.txt will store all output from top ok even if i break it with ctrl-c. I suggest you dump first, and then grep the resulting file.