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?
As pointed out by @Thor in a comment, you just need to ensure that
grep
is not buffering arbitrarily but per-line with the--line-buffered
option:Without grep-ing, redirecting the output of
top
to a file works just fine, interrupt included.From the top command, we can see all the processes with their PID (Process ID). To print top output for only one process, use the following command:
To save top command of any process to a file, use the following command:
where > redirects standard output to a file.
Solved this issue. This works even if you press Ctrl+c Even I was facing the same issue when I wanted to log Cpu%. Execute this shell script:
man top
for more detailsSource for explanations of -b and -n: manpages
Kruthika
for me
top -b > test.txt
will store all output fromtop
ok even if i break it withctrl-c
. I suggest you dump first, and thengrep
the resulting file.