アウトライン
私たちは、もともとは、サーバー上のパフォーマンスを分析したい、あなたはLinuxの一連のコマンドを実行する必要があります。Linuxのコマンドなじみのない人のために、より多くの困難
今、シェルスクリプトの統合セットは、一般的に使用されるLinuxのコマンドは、それに含まれている、パフォーマンスのボトルネックの解析をワンクリック
スクリプト機能
1、表示CPU使用率と負荷(トップ、vmstatの、SAR)
図2は、ディスク、iノードの利用率とI / O負荷(DF、IOSTAT、iotopの、SAR、DSTAT)を表示します
図3に示すように、ビューのメモリ使用量(遊離、vmstatの)
4.チェックTCPコネクション(netstatコマンド、SS)
図5は、10のまでの処理(トップ、PS)のCPUとメモリフットプリントを表示します
図6に示すように、ビューのネットワークトラフィック(ifconfigコマンド、iftop、iptraf)
スクリプトは次のよう
#!/ binに/のbash #1 os_check(){ もし[-eの/ etc / RedHatの放出]。その後、 = `猫の/ etc / redhatのリリースREDHAT |カット-d ' '-f1` 他 DEBIAN =`猫の/ etc /問題| -dカット'' -f1` Fiの [ "$のREDHAT" == "のCentOS"の場合-o "$のREDHAT" == "赤"]; その後、 P_M = YUM のelif [ "$ DEBIAN" == "Ubuntuの" -o "$ DEBIAN" == "ubutnu"]; その後、 P_M = apt-getを 他の オペレーティングシステムがサポートしていません。 1番出口 Fiの } [$ LOGNAME =ルート!]であれば、その後、 「エコー Fiが んdisk_load disk_use disk_inode mem_use tcp_status cpu_top10 mem_top10トラフィックが終了しcpu_loadで入力を選択します。行う もし!これは、vmstat&>を/ dev / null; その後、 「今すぐインストール、vmstatのコマンドが見つかりません。」エコー 睡眠1 os_checkの $のP_Mはprocpsのは、-yインストール ---------------------------------------」エコー--------------------------------」 Fiが あれば!これIOSTAT&>を/ dev / null; その後、 「今すぐインストール、iostatコマンドが見つかりません。」エコー 睡眠1 os_checkの $のP_Mはsysstatの-yインストール ---------------------------------------エコー」 --------------------------------」 Fiの 真の間、やる におけるケース$入力 cpu_load)を #CPU利用率与负载 "---------------------------------------"エコー I = 1 しばらく[[$ I -le 3]。やる エコー-e "\ 033 [32メートル参考值$ {I} 033 [0メートル\" UTIL = `vmstatの|のawk '{場合(NR == 3)プリント100- $ 15 "%"}'` USER = `vmstatの| AWK '{(NRの== 3)は$ 13印刷する場合、 "%"}' ` SYS =`のvmstat | AWK '{(NRの== 3)は、 "%"は$ 14印刷する場合} ` IOWAIT =`のvmstat | AWK「{もし(NRの== 3)印刷$ 16 "%"} ' ` エコー"使用率:$ UTIL" エコー"ユーザー使用:$ユーザ" エコー"システムの使用:$ SYS" エコー" 睡眠1 WRITE =` IOSTAT -x - K |のawk「/ ^ [V | S] / {OFS = ": 行わ エコー「---------------------------------------」 破る ;; disk_load) #硬盘I / O负载 エコー"---------------------------------------" I = 1 [[$ iは3] -Le]つつ。やる エコー-e "\ 033 [32メートル参考值$ {I} \ 033 [0メートル" UTIL = `のiostat -x -k | awkの「/ ^ [V | S] / {OFS = ":"; $ 1印刷し、$ NF "%"} '` READ =` IOSTAT -x -k | AWK '/ ^ [V | S] / {OFS = ": "; $ 1、$ 6" KBを"}印刷' ` IOWAIT =`のvmstat | AWK' 「{ "%"(NRの== 3)$ 16印刷する場合} :-e "$ IOWAIT I / O待ち"エコー エコー-e "読み取り/秒:\ nは$ READ" エコー-e "の書き込み/秒:\ nは$ WRITE" I = $(($ I + 1)) 睡眠を1 行わ エコー「---------------------------------------」 破る ;; disk_use)# 硬盘利用率 DISK_LOG =を/ tmp / disk_use.tmp DISK_TOTAL = `のfdisk -l | awkの「$ 2" /^Disk.*bytes/&&/\/dev/{printf「;のprintf "%d個"、$ 3;印刷「GB」} ' ` [$ iの90 -gt]場合は、その後、 $ USE_RATEで私のために。 = `DF -h PARTを|のawk '{場合(== INT($ 5)' '' $ i 'を' ')$ 6印刷}'` エコー"の$ PART = $ {I}%" >> $ DISK_LOGの fiが 完了 「---------------------------------------」エコー エコー-e「ディスクの合計:\ n個の$ {DISK_TOTAL}」 もし[-f $ DISK_LOG]。その後、 「---------------------------------------」エコー 猫$ DISK_LOG 「エコー- -------------------------------------」 「ディスク使用率がないパーティションの90%を超える。」エコー "---------------------------------------"エコー Fi回線 ブレーク ;; disk_inode) #硬盘iノード利用率 INODE_LOG =を/ tmp / inode_use.tmp INODE_USE = `DF -i |のawk '/ ^ \は/ dev / {印刷INT($ 5)}'` $ INODE_USEで私のために。行う 場合は、[$ iの-gt 90]。その後、 PART = `DF -h | awkの'{場合(INT($ 5)==' ' '$ 6印刷'が$'私は'')}'` エコー"の$ PART = $ {I}%" >> [-f $ INODE_LOG]であれば、その後、 エコー"---------------------------------------" のrm -f $ INODE_LOG 他の エコー「---------------------------------------」 いいえ90%以上のエコー「iノード使用率パーティションの。」 "---------------------------------------"エコー Fi回線 ブレーク ;; mem_use) #内存利用率 エコー"---------------------------------------" MEM_TOTAL = `無料-m |のawk「{(NR == 2)のprintf "%の.1f"であれば、$ 1024分の2} END {印刷"G" USE = `無料-m | awkの'{場合(NR == 3)のprintf "%の.1f"、$ 1024分の3} END {印刷"G"}'` FREE = `無料-m | awkの CACHE = `フリー-m | AWK「{IF(NR == 2)のprintf "%の.1f"、($ 6 + $ 7)/ 1024} END {印刷"G"} ` エコー-e "合計:$ MEM_TOTAL" エコー-e "を使用します。$ USE" エコー-e"無料:$ FREE " エコー-e "キャッシュ:$ CACHE" エコー" ---------------------------------- -----」 壊れ ;; tcp_status)# 网络连接状态 エコー"---------------------------------------" COUNT = `netstatの-antp | awkの エコー- E "TCP接続状況ます:\ n $をCOUNT" エコー「------------------------------------- - 」 ;; cpu_top10) #占用CPUの高的前10个进程 ---------------------------------------」エコー「 CPU_LOG = / TMP / cpu_top.tmp I = 1 [[$ iが3] -Le]つつ。ん #ps AUX | AWK「{IF($ 3>の0.1)プリント"CPU: "$ 3" % - >"、$ 11 $ 12 $ 13 $ 14 $ 15 $ 16 "(PID:" $ 2 ")" |」ソート-k2 -nr |ヘッド10" } '> $ CPU_LOGの-n のPS AUX | AWK' {IF($ 3>の0.1){{printfの"PID: "$ 2" CPU "$ 3" % - >"}の( <= NFを、私は++)の場合(I == NF)のprintf $を私は"\ n"は、そうでないのprintf $ I}}」|並べ替え-k4 -nr | -10ヘッド>私は、私は、11 = $ CPU_LOG あれば[[ - N `猫はCPU_LOG`]] $。その後、 "-eエコー 他に 、 "プロセスのCPUを使用した。いいえ"エコー BREAK Fiの I $ =((私は$を+ 1)) SLEEP。1は DONE ----------------------」エコー----------------- " BREAK ;; mem_top10) #は10個のプロセスの前に、高いメモリを占有 エコー" ---------------- -----------------------「 MEM_LOG =を/ tmp / mem_top.tmp I =。1 [[$ iが3] -Le]ながら、行う #ps AUX | AWK「{IF($ 4> 0.1)プリント"メモリー: "$ 4" % - >"、$ 11 $ 12 $ 13 $ 14 $ 15 $ 16 "(PID:" $ 2 ")" |」ソート-k2 -nr |ヘッド10" -n} '> $ MEM_LOG PS AUX | AWK' {IF($ 4> 0.1){{printfの"PID: "$ 2"メモリ: "$ 3" % - >"}(のための<= NFを、私は++)の場合(I == NF)のprintf $を私は"\ n"は、そうでないのprintf $ I}}」|並べ替え-k4 -nr | -10ヘッド>私は、私は、11 = $ MEM_LOG あれば[[ - N `猫はMEM_LOG`]] $。その後、 エコー-e "\ 033 [32メートル参考值$ {I} \ 033 [0メートル" 猫$ MEM_LOG > $ MEM_LOG 他 エコー" 私は= $(($ I + 1)) そうでありません 行わ エコー「---------------------------------------」 破る ;; 交通) #查看网络流量 真しばらく; "ネットワークカード名(ETH [0-9]やEM [0-9])を入力してください:" -p読みETH の#if [[$ ETH =〜^ ETH [0-9] $]]を|| [[$ ETH =〜^全角[0-9] $]] && [[ `ifconfigコマンド|グレップの-c "\ <$ ETH \>"` -eq 1]]; そして、 もし[ `ifconfigコマンド|グレップ-c "\ <$ ETH \>"` -eq 1]; その後、 壊れ エコー「入力フォーマットエラーや、カード名を持ってもう一度入力を喜ばないでください。」 「---------------------------------------」エコー ではエコー-e」--- ---アウト」 I = 1 [[$ iの3] -Le]ながら、やる #OLD_IN = `ifconfigコマンド$ ETHに|のawk '/ RXバイトが/ {$ 2印刷}' | -dカット:-f2` NEW_OUT =` ifconfigコマンド$ ETH | AWKの-F '[:] +「/バイト/ {(NRの== 8)$ 9印刷する場合、他の場合(NRの== 7)} $ 6印刷'` INは=' AWK'{printfの"%の.1fを\ n" BEGIN、 #OLD_OUT =` ifconfigコマンド$ ETH | awkの/ RXバイトが/ {$ 6印刷} '|カット- D:-f2` OLD_IN = `ifconfigコマンド$ ETH | AWK -F '[:] + '/バイト/ {(NRの== 8)が$ 4印刷する場合、そうでなければ(NRの== 5)$ 6印刷する場合}' OLD_OUT = `ifconfigコマンド$ ETH | AWK -F '[:] + '/バイト/ {(NRの== 8)場合、$ 9印刷、他の(NRの== 7)$ 6印刷する場合}`' スリープ1 NEW_IN =' ifconfigコマンド$ ETH | AWK -F '[:] + '/バイト/ {(NRの== 8)が$ 4印刷する場合、そうでなければ(NRの== 5)$ 6印刷する場合}'' OUT = 'AWKが「{printfの「%をBEGIN .1f \ n」、 '$(($ {NEW_OUT} - $ {OLD_OUT}))' / 128分の1024} ' ` エコー"$ {IN} MB / sの$ {OUT} MB / sの" I = $( ($ I + 1)) 1寝 て行わ エコー「-------------------------------------- - 」 壊れ ;; )終了 終了0を ;; *) エコー「---------------------------------------」 エコー「番号を入力してください。」 エコー " - - - - - - - - - - - - - - - - - - - -" ESACは 終わっ 行われ
以下の営業成績
#1のSH show_sys_info.sh
1)cpu_load:CPU分析
UTIL:CPU使用率
ユーザーの使用:ユーザーのCPUの割合
システム使用:CPUシステムの割合
I / O待ち:I / Oの割合を待ちます
三つのリフレッシュ間隔を1秒
2)ディスクを解析disk_load
Utilの:秒あたりに処理ディスクの割合
VDA:
I / O待ち:待ち時間IO
読み取り/秒:ディスクの読み取りあたりのデータ量
:VDA
書き込み/ S:秒あたりのディスク書き込みデータ量
VDA:
3)disk_useのディスク使用量
ディスクの合計:ディスクとディスクパーティション使用回数を印刷
4)disk_inodeディスクが印刷され、90%以上が存在する場合inodo
5)mem_useメモリ使用量
合計:総メモリ
使用:メモリを使用
空き:空きメモリ
キャッシュ:キャッシュメモリ
6)TCP状態をtcp_status
7)cpu_top10占有CPU 10の最大プロセス
10の最大のプロセスのために8)mem_top10メモリ
カードを表示する9)トラフィックのフローとアウト