根據需求,項目需要讀取linux系統環境參數,所以需要將top命令的輸出結果輸入到文件中。用重定向命令如下:top > result.txt 。用vi打開文件: vi result.txt 。顯示的結果卻是這樣的,看圖更方便:
於是分析出一下幾個原因:
1.其他命令是否出現相同問題?
2.是否是文件編碼格式問題導致?
3.是否是系統平臺問題導致?
下面一個一個測試:
1.測試命令:ls > testls.txt
結果如圖:
測試命令:ps -ef > testps.txt
結果如圖:
可以得出結論,其他命令沒有出現這樣的情況,排除原因1.
2.看看result.txt文件的編碼格式
vi result.txt進入文件輸入: ":set fileencoding" 後按回車顯示utf-8,如下圖:
於是也可以排除不是文件編碼的問題;排除原因2;
3.將 result.txt 文件拿到windows系統中打開,顯示如下圖:
也出現了亂碼情況,所以也不是系統平臺的原因。。。這下原因3也排除了。
這下該怎麼辦呢???
最後能想到的只有命令本身了,因爲其他命令沒有出現這種情況,所以會想到在top命令的參數中會有蹊蹺。
下面是linux top命令的詳解:http://rockhooray.blog.51cto.com/938613/832621
可以發現,在想要輸出內容到文件中則需要使用批處理模式。詳細介紹如下:
-b 批處理模式操作
開啓top工作在批處理模式,這樣在需要將top的輸出信息輸出 到其他程序或文件時非常有用。在這種模式下,top不接受任何輸入操作,直到通過-n 設置的重複次數後,或者退出top才終止。
在終端中輸入top -b top將不斷重複地顯示任務信息,知道按Ctrl+C終止爲止,在終端中輸入top -b -n 10 ,top將顯示10次後終止,也就是分10個批次顯示完後就退出。
所以只需要在命令中指定爲批處理模式問題就解決啦: top -b > result.txt 結果就不在展示了。