Linux有豐富的工具,這些工具組合來使用會更增強大。性能工具也同樣,單獨使用雖然也沒有問題,可是和其餘的工具組合起來就能顯著提升有效性和易用性。shell
如同前面章節所述,性能調查最有價值的步驟之一就是保存在調查過程當中發出的命令和產生的結果。Linux提供了兩個命令:tee和script,前者可以將工具的輸出保存爲文件,後者能記錄每一個按鍵和屏幕上的每個輸出。這些信息保存下來,便於之後的查看。bash
自動執行命令很重要,由於它能夠減小出錯的機會,是你在思考問題時不需記住全部的細節。在你一次性鍵入又長又複雜的命令行以後,bash shell和watch命令可以可讓你週期性地自動執行這些命令,不須要再次輸入。函數
Linux有提供gnumeric電子表格,沒有裝圖形界面,不介紹。工具
還有一些Linux的工具能使你肯定應用程序使用了哪些庫,以及顯示給定庫提供的全部函數。ldd命令給出一個特定應用程序使用的所有共享庫的列表。在你想要跟蹤被應用程序使用的庫的數量和位置時,這個命令頗有效。Linux中還有一個命令,objdump,它能夠在指定庫或應用程序中搜索並顯示其提供所有函數。ltrace只能給出一個應用程序調用函數的名稱,可是結合命令ldd和objdump,你就可以利用ltrace的輸出來肯定指定函數屬於哪一個庫。性能
這個須要gcc工具,不介紹。測試
bash是Linux默認的shell,在每次使用Linux的時候,最有可能使用到它。bash一般用來編寫功能強大的腳本,可是也能夠直接在命令行中調用,從而可以讓一些複雜的任務自動化。命令行
bash運行時腳本選項,使用while來週期性執行命令調試
選項blog |
說明ip |
while condition |
條件爲真時,循環執行 |
do |
表示循環開始 |
done |
表示循環結束 |
用例示範,ifconfig不能週期性顯示它們的統計信息,咱們可使用while來週期性執行ifconfig命令,用來查詢接收數據包的實時狀況。
while true;do sleep 1;ifconfig eth0|grep "RX packets";done; |
tee是個簡單的命令,能夠將命令的標準輸出保存爲文件而且同時進行顯示。在想要保存並同時查看性能工具輸出的時候,tee是頗有幫助的。好比,正在監控一個實時系統的性能統計信息的同時,保存這些數據已備未來對它們進行分析。
語法: -a是追加模式,不然會直接覆蓋文件
<command>|tee [-a] [file] |
用法示例
vmstat 1 5 |tee /tmp/vmstat_out |
script命令能夠將一個shell會話過程當中產生的所有輸入和輸出保存爲文本文件。在調查性能問題的時候,準確記錄被執行的命令是頗有用的,由於你能夠在以後的時間查看執行過的測試。
script命令在執行的時候會啓動一個新的shell,並記錄這個shell存續期間全部的鍵盤動做和輸入,已經生成的輸出,並保存爲文件。若是屏幕的輸出有彩色或者加粗,會在輸出文件中顯示爲esc字符。能夠把TERM環境變量設置爲dumb來解決。export TERM=dumb
語法:-a是追加輸入,-t是增長計時信息
script [-a] [-t] [file] |
用法示例:輸入exit或者ctrl-d組合來退出該shell
默認狀況下,watch命令會每秒運行一條命令並將其輸出顯示到屏幕上。與那些不能週期性顯示結果的性能工具一塊兒工做時,watch就能發揮做用了。雖然說watch的功能能夠用shell腳本代替,可是watch的使用更加簡單,而且幾乎哪裏均可以使用。
語法
watch [-d[=cumulative]] [-n sec] <command> |
watch命令行選項
-d [=cumulative] |
突出顯示樣本之間變化的輸出 |
-n sec |
更新等待的秒數 |
用法示例:watch會自動清屏的
ldd會列出對應的二進制文件所需的全部庫,以及系統中有哪些文件能實現這些需求
對於分析二進制文件和庫的各個方面來講,objdump是一種複雜而強大的工具。儘管它有其餘許多功能,它能夠被用來肯定給定的庫提供了那些函數。