Linux运维常用命令


自分の小さいウェブサイトはアリ雲のECSの上で走って、たまには自分のウェブサイトのサーバーログを分析して、ウェブサイトのアクセス量を見てみます。ブラックホールが破壊されていますか?そこで収集して、いくつかサーバーログの分析コマンドを整理して、みんなは試してもいいです。
1、いくつのIPアクセスがあるかを確認する: awk '{print $1}' log_file|sort|uniq|wc -lPS:wc-lどれぐらいの行がありますか?
2、あるページの訪問回数を確認する:grep "/index.php" log_file | wc -l3、各IPを調べていくつのページにアクセスしましたか?awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file > log.txt
sort -n -t ' ' -k 2 log.txt # sort
4、各IPアクセスのページ数を小さい順に並べ替える:awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n5、あるIPを調べてどのページにアクセスしましたか?grep ^111.111.111.111 log_file| awk '{print $1,$7}'
6、検索エンジンの統計を削除するページ:awk '{print $12,$1}' log_file | grep ^\"Mozilla | awk '{print $2}' |sort | uniq | wc -l7、2015年8月16日14時のこの1時間内にどれぐらいのIPアクセスがあるかを確認する:awk '{print $4,$1}' log_file | grep 16/Aug/2015:14 | awk '{print $2}'| sort | uniq | wc -l
8、訪問前の10個のipアドレスを確認する

awk '{print $1}' |sort|uniq -c|sort -nr |head -10 access_log
uniq -c                  

cat access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -10 

cat access.log|awk '{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}


9、アクセス数が最も多い10のファイルまたはページ

 cat log_file|awk '{print $11}'|sort|uniq -c|sort -nr | head -10
 cat log_file|awk '{print $11}'|sort|uniq -c|sort -nr|head -20 
awk '{print $1}' log_file |sort -n -r |uniq -c | sort -n -r | head -20 #        20 ip

10、サブドメインの訪問回数は、refererによって計算されますが、少し違っています。cat access.log | awk '{print $11}' | sed -e ' s/http:\/\///' -e ' s/\/.*//' | sort | uniq -c | sort -rn | head -20
11、伝送サイズが一番大きいいくつかのファイルを一覧表示します。cat wwww.access.log |awk '($7~/\.php/){print $10 " " $1 " " $4 " " $7}'|sort -nr|head -10012、出力が200000 byte(約200 kb)より大きいページと対応ページの発生回数を一覧表示します。cat wwww.access.log |awk '($10 > 200000 && $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -10013、ログの最後の列がページファイル転送時間である場合、クライアントに最も時間がかかるページが表示されます。cat wwww.access.log |awk '($7~/\.php/){print $NF " " $1 " " $4 " " $7}'|sort -nr|head -10014、最も時間がかかるページ(60秒を超える)のリストと、対応ページの発生回数cat wwww.access.log |awk '($NF > 60 && $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100
15、伝送時間が30秒を超えるファイルを一覧表示するcat wwww.access.log |awk '($NF > 30){print $7}'|sort -n|uniq -c|sort -nr|head -2016、現在のサーバの各プロセスの実行数をリストし、順序を追って並べます。ps -ef | awk -F ' ' '{print $8 " " $9}' |sort | uniq -c |sort -nr |head -2017、apache現在同時アクセス数を確認する
httpd.co nfのMaxCientsとの数字の差を比べてみます。netstat -an | grep ESTABLISHED | wc -l18、次のパラメータでデータを見ることができます。ps -ef|grep httpd|wc -lhttpdプロセス数を統計して、一つの要求によって一つのプロセスが起動されます。Apacheサーバに使用されます。
Appacheが1388個の同時要求を処理できることを示し、この値は負荷状況に応じて自動的に調整されます。netstat -nat|grep -i "80"|wc -lnetstat-anは、システムの現在のネットワークリンク状態を印刷しますが、grep-i"80"は80ポートに関する接続を抽出するために使用されます。wc-lは接続数統計を行います。
最終的に返した数字は現在の80ポートの合計です。netstat -na|grep ESTABLISHED|wc -lnetstat-anは、システムの現在のネットワーク接続状態をプリントし、grep ESTABLISHEDは接続が確立された情報を抽出します。そしてwc-l統計。
最終的に返した数字は現在の80ポートの接続数の合計です。netstat -nat||grep ESTABLISHED|wc接続を確立したすべての詳細な記録を見ることができます。
19、各ipの接続数、及び全体の各状態の接続数を出力する。
netstat-n|awk'/^tcp/{n=split($N-F-1)、array、「:」);if(n<=2)+S[array[(1)]]else+S[array[(4)];++s[$NF];++N}END{for(a in S){printf(“%20 s%s”、a、S[a]);+I}printf(「%-20 s%s」「TOTAL_」IP",I);for(a in s)printf(「%20 s%s」、a、s[a]);printf(「%-20 s%s」「TOTAL_」LINK',N)''
20、その他の収集
分析ログファイルの下で2012-05-04ページの最高の上位20のURLにアクセスして並べ替えます。cat access.log |grep '04/May/2012'| awk '{print $11}'|sort|uniq -c|sort -nr|head -20
訪問先ページのURLアドレスを検索すると、www.abc.comアドレスが含まれています。cat access_log | awk '($11~/\www.abc.com/){print $1}'|sort|uniq -c|sort -nr
は、アクセスが最も高い10つのIPアドレスを取得するとともに、時間的に照会することもできる。cat linewow-access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -10
時間帯はログの時間帯を調べます。cat log_file | egrep '15/Aug/2015|16/Aug/2015' |awk '{print $1}'|sort|uniq -c|sort -nr|head -10
は、2015/8/15から2015/8/16まで「/index.php?g=Member&m=Public&a=sendValidCode」にアクセスするIP倒順配列を分析します。cat log_file | egrep '15/Aug/2015|16/Aug/2015' | awk '{if($7 == "/index.php?g=Member&m=Public&a=sendValidCode") print $1,$7}'|sort|uniq -c|sort -nr ($7~/.php/)$7に含まれています。phpの出力は、最も時間がかかるPHPページ100ページを意味します。cat log_file |awk '($7~/\.php/){print $NF " " $1 " " $4 " " $7}'|sort -nr|head -100
は、最も時間がかかるページ(60秒以上のページ)と、対応するページの発生回数*cat access.log |awk '($NF > 60 && $7~/.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100統計サイトの流量(G)cat access.log |awk '{sum+=$10} END {print sum/1024/1024/1024}'
統計404の接続awk '($9 ~/404/)' access.log | awk '{print $9,$7}' | sort
http statusを統計します
cat access.log awk'{counts[$9]+=1];END{for(code in counts)print code,counts[code]
cat access.log awk'print$9''|sort|uniq-c|sort-rn
毎秒マージ:
ウォッチ「awk'{if}($9~/200|30|404/)カウントダウン($4)+END{for(a in COUNT)print a,COUNT[a]]log_file sort-k 2-nr head-n 10"
帯域幅統計
cat apache.log awk'{if($7~/GET/)count+}END{print’client_request=「count」
cat apache.log awk'{BYTE+=11}END{print'client_kbyte_out=「BYTE/1024」KB''
ある日の訪問回数が一番多い10個のIPを探してください。
cat/tmp/access.log grep「20/Mar/2011」|awk'{print$3}'|sort|uniq-c|sort-nr head
当日のip接続数が一番高いipは何をしていますか?
cat access.log grep「10.0.21.17」cat awk'{print$8}'|sort|uniq-c|sort-nr head-n 10
時間単位のip接続数が一番多い10時間帯
awk-vFS=「:」{gsub(「-.*」、「"、$1);num[$2]++END{for(i in num)print i,num[i]'log_file sort-n-k 3-r head-10
訪問回数の最大数分を見つける
awk'{print$1}'access.log grep'20/Mar/2011'|cut-c 14-18|sort-c|head
5分間日記を取ります
if[$DATE_]MINUTE!=$DATE_END_MINUTE;then葃はスタートタイムスタンプと終了タイムスタンプが同じかどうかを判断します。START_LINE=sed-n"/$DATE_MINUTE/=“$APACHE_”LOG|head-n 1 zhiが等しくない場合は、スタートタイムスタンプの行番号を取り出し、終了タイムスタンプの行番号を表示します。
tcpのリンク状態を表示します。

netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn 

netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}' 

netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}' 

netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}' 

netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn 

netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
netstat -ant|awk '/ip:80/{split($5,ip,":");++S[ip[1]]}END{for (a in S) print S[a],a}' |sort -n 

netstat -ant|awk '/:80/{split($5,ip,":");++S[ip[1]]}END{for (a in S) print S[a],a}' |sort -rn|head -n 10 

awk 'BEGIN{printf ("http_code\tcount_num
")}{COUNT[$10]++}END{for (a in COUNT) printf a"\t\t"COUNT[a]"
"}'
検索要求数の最初の20つのIP(攻撃元の検索によく使われる):

netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20 
netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}' |sort -rn|head -n20
tcpdumpで80ポートの訪問を探してみます。誰が一番高いですか?
tcpdump-i eth 0-tnn dst port 80-c 1000|awk-F''''print$1'''''2''''3'''''4'''n sort|uniq-c|sort-nr head-20
検索が多いですwait接続
netstat-n grep TIME_WAIT(株)awk'{print$5}'|sort|uniq-c|sort-rn head-n 20
検索の多いSYN接続を探しています。
netstat-an grep SYN_awk'{print$5}'|awk-F:'{print$1}''|sort|uniq-c|sort-nr more
ポート列によるプロセス
netstat-ntlp grep 80|awk'{print$7}'|cut-d/-f 1
接続数と現在の接続数を確認しました。
netstat-ant grep$ip:80|wc-l
netstat-ant grep$ip:80|grep EST 124; wc-l
IPアクセス回数を表示netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n
Linuxコマンドは現在のリンク状況を分析します。

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 
watch "netstat -n | awk '/^tcp/ {++S[&dollar;NF]} END {for(a in S) print a, S[a]}'" #   watch      

ラスト.ACK 5は、一つのTCP接続をオフにするには、二つの方向からそれぞれオフする必要があります。両方とも、FINを送信することにより、一方向データのクローズを表します。通信双方が最後のFINを送信した場合、送信側はこの時点でLAST_にあります。ACK状態は、送信者が相手の確認(FinのAck確認)を受信した後に、本当にTCP接続全体をクローズします。
SYN_RECV 30铉は処理を待っている要求数を表しています。
ESTABLISHED 1597{は正常データ伝送状態を表しています。
FIN_WAIT 1 51菗はserver端の自発的要求を表してtcp接続をクローズします。
FIN_WAIT 2 504萼はクライアントの接続を中断することを意味する。
TIME_WAIT 1057菟は処理が完了し、タイムアウトの完了を待つ要求数を表します。