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

后端 未结 10 923
梦如初夏
梦如初夏 2020-12-24 06:14

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         


        
相关标签:
10条回答
  • 2020-12-24 06:42

    I had the exact same problem...

    here was my line:

    top -b -u myUser | grep -v Prog.sh | grep Prog > myFile.txt
    

    It would create myFile.txt but it would be empty when I Ctrl+C'd it. So after I kicked off my top command, then I started a SECOND top process. When I found the first top's PID (took some trial and error), and I killed it thru the second top, the first top wrote to the file as expected.

    Hope that helps!

    0 讨论(0)
  • 2020-12-24 06:44

    If you wish to run the top command in background (just not to worry about logout/sleep, etc) - you can make use of nohup or batch job or cron or screen.

    Using nohup (stands for : No Hang Up):

    Say suppose if you save the top command in a file called top-exec.sh with following content :

     top -p <PID> -b > /tmp/top.log
    

    You can replace the top command for whatever process you are interested in. Then, You can execute top-exec.sh using nohup as follows :

    $> nohup top-exec.sh &
    

    This will redirect all the output of top command to a file named "top.log".

    0 讨论(0)
  • 2020-12-24 06:47

    Here is the 1-liner I like to use on my mac:

    top -o -pid -l 1 | grep "some regexp"
    

    Cheers.

    0 讨论(0)
  • 2020-12-24 06:49

    It looks like the output is not writing to the file until all iterations are finished. You could solve this by wrapping with an external loop like this:

    touch top-output.txt
    while true; do
        top -b | grep init >> top-output.txt
    done
    
    0 讨论(0)
提交回复
热议问题