网站排错常用命令 不指定

kangyang , 2014/07/21 16:35 , WEB技术 , 评论(0) , 阅读(3612) , Via 本站原创
批量kill进程
ps -efww|grep sqlr-listener|grep -v grep|cut -c 9-15|xargs kill -9

实时查看正在执行的sql语句
/usr/sbin/tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | egrep -i 'SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL'

1.查看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

2.查找请求数请20个IP(常用于查找攻来源):
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20

netstat -an | grep 80  | grep TIME_WAIT|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20

netstat -an | grep 80  | grep TIME_WAIT

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

3.用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20

4.查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

5.找查较多的SYN连接
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more

6.根据端口列进程
netstat -ntlp | grep 80 | awk '{print $7}' | cut -d/ -f1


网站日志分析篇1(Apache):

1.获得访问前10位的ip地址
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}'

2.访问次数最多的文件或页面,取前20
cat access.log|awk '{print $11}'|sort|uniq -c|sort -nr|head -20

3.列出传输最大的几个exe文件(分析下载站的时候常用)
cat access.log |awk '($7~/\.exe/){print $10 " " $1 " " $4 " " $7}'|sort -nr|head -20

4.列出输出大于200000byte(约200kb)的exe文件以及对应文件发生次数
cat access.log |awk '($10 > 200000 && $7~/\.exe/){print $7}'|sort -n|uniq -c|sort -nr|head -100

5.如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面
cat access.log |awk  '($7~/\.php/){print $NF " " $1 " " $4 " " $7}'|sort -nr|head -100

6.列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
cat access.log |awk '($NF > 60 && $7~/\.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100

7.列出传输时间超过 30 秒的文件
cat access.log |awk '($NF > 30){print $7}'|sort -n|uniq -c|sort -nr|head -20

8.统计网站流量(G)
cat access.log |awk '{sum+=$10} END {print sum/1024/1024/1024}'

9.统计404的连接
awk '($9 ~/404/)' access.log | awk '{print $9,$7}' | sort

10. 统计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

10.蜘蛛分析
查看是哪些蜘蛛在抓取内容。
/usr/sbin/tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | grep -i -E 'bot|crawler|slurp|spider'


网站日分析2(Squid篇)

2.按域统计流量
zcat squid_access.log.tar.gz| awk '{print $10,$7}' |awk 'BEGIN{FS="[ /]"}{trfc[$4]+=$1}END{for(domain in trfc){printf "%s\t%d\n",domain,trfc[domain]}}'

效率更高的perl版本请到此下载:http://docs.linuxtone.org/soft/tools/tr.pl

数据库篇
1.查看数据库执行的sql
/usr/sbin/tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | egrep -i 'SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL'



系统Debug分析篇

1.调试命令
strace -p pid

2.跟踪指定进程的PID
gdb -p pid




介绍几种用Linux命令判断CC攻击的方法


查看所有80端口的连接数


netstat -nat|grep -i “80″|wc -l
对连接的IP按连接数量进行排序


netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n
查看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
查看80端口连接数最多的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}’ |sort -rn|head -n20
用tcpdump嗅探80端口的访问看看谁最高


tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F”.” ‘{print $1″.”$2″.”$3″.”$4}’ | sort | uniq -c | sort -nr |head -20
查找较多time_wait连接


netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20
查找较多的SYN连接


netstat -an | grep SYN | awk ‘{print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -nr | more

linux系统技巧17条命令 不指定

kangyang , 2014/07/21 16:35 , LINUX系统管理 , 评论(0) , 阅读(3007) , Via 本站原创
1、查找所有tar文件然后移动到目录:find . -name “*.tar” -exec mv {} ./backup/ \;

2、查找for i in `find . -name *.html|sed ‘s/\.//g’|sed ‘s/html/.html/g’` ;do echo http://192.168.0.170:8017$i ; done

3、去掉行首的.字符:
find . -name *.html|sed ‘s/^.//g’

4、查找类型属于文件的,然后备份到其他目录:

find . -name nginx.conf.tgz -exec cp {} dir/ \;

5、监控linux磁盘分区,如果空间大于90%,发送邮件给Linux SA
(1)、打印根分区大小
df -h |sed -n ‘/\/$/p’|awk ‘{print $5}’|awk -F”%” ‘{print $1}’
(2)、if条件判断该大小是否大于90,如果大于90则发送邮件报警

while sleep 5m
do

for i in `df -h |sed -n ‘/\/$/p’ |awk ‘{print $5}’ |sed ‘s/%//g’`
do
echo $i

if [ $i -gt 90 ];then
echo “More than 90% Linux of disk space ,Please Linux SA Check Linux Disk \!” |mail -s “Warn Linux / Parts is $i%”

wugk@map.com
fi
done
done

6、统计apache访问日志,访问量排在前20 ip地址:

cat access.log |awk ‘{print $1}’|sort|uniq -c |sort -nr |head -20

7、在所有行前添加http://img.map.com,并在最后添加/
sed -e ‘s/^/http:\/\/img.map.com\/maplite\/map\/subway\/1.1\//’ -e ‘s/$/\//’ a.txt
8、找到当前行,然后在修改该行后面的参数:
sed -i ‘/SELINUX/s/disabled/enforcing/’ /etc/selinux/config
9、查找并修改目录下所有文件夹的名字:
find . -name “NaviInfo.2010.12.0″ |xargs rename NaviInfo.2010.12.0 NaviInfo.2010.12.1
10、查看apache并发连接数,及相关转发状态:
netstat -n |awk ‘/^tcp/’|awk ‘{print $NF}’|sort |uniq -c |sort -nr
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

11、打印出一个文件里面最大和最小值:
cat a.txt |sort -nr|awk ‘{}END{print} NR==1′
cat a.txt |sort -nr |awk ‘END{print} NR==1′
这个才是真正的打印最大最小值:sed ‘s/ /\n/g’ a.txt |sort -nr|sed -n ’1p;$p’

12、使用snmpd抓取版本为v2的cacti数据方式:
snmpwalk -v2c -c public 192.168.0.241
13、修改文本中以jk结尾的替换成yz:
sed -e ‘s/jk$/yz/g’ b.txt
14、网络抓包:tcpdump
tcpdump -nn host 192.168.56.7 and port 80 抓取56.7通过80请求的数据包。
tcpdump -nn host 192.168.56.7 or ! host 192.168.0.22 and port 80 排除0.22 80端口!
tcp/ip 7层协议 物理层–数据链路层-网络层-传输层-会话层-表示层-应用层。

15、H3C配置团体名配置:首先设置snmp版本如下:
snmp-agent sys-info version v1 v2c ,然后设置团体名:snmp-agent community read public
16、apache优化配置:这里记录worker方式的

(1)、默认配置如下:

# StartServers 2
# MaxClients 150
# MinSpareThreads 25
# MaxSpareThreads 75
# ThreadsPerChild 25
# MaxRequestsPerChild 0


(2)、优化配置:

ServerLimit 64
StartServers 8
ThreadLimit 128
MaxClients 8192
MinSpareThreads 64
MaxSpareThreads 256
ThreadsPerChild 64
MaxRequestsPerChild 10000


17、显示最常用的20条命令:
cat .bash_history |grep -v ^# |awk ‘{print $1}’ |sort |uniq -c |sort -nr |head -20
很多服务器上运行的脚本都是通过mail来发送通知的,但是当没有邮件服务器的时候通过mail发送的邮件经常被 对方的邮件服务器拒绝掉。之前我发过用msmtp+mutt来解决这个问题,但后来发现有些情况不得不用mail,比如说已经有n多脚本在跑,或者其他什么原因不能用mutt的时候。
其实很简单,看了msmtp官方文档后才发现原来用msmtp+mail来发邮件竟然比msmtp+mutt还要简单.
1、安装msmtp
官方地址:http://sourceforge.net/projects/msmtp/files/msmtp/
也可以直接使用下面命令下载:
wget -c http://clang.googlecode.com/files/msmtp-1.4.29.tar.bz2

下载到服务器上,使用命令解压,以1.4.29版本为例:

tar xf msmtp-1.4.29.tar.bz2
cd msmtp-1.4.29
./configure --prefix=/usr/local/msmtp

编译的结果如下:
Install prefix ......... : /usr/local/msmtp
TLS/SSL support ........ : yes (Library: OpenSSL)
GNU SASL support ....... : no
GNU Libidn support ..... : yes
NLS support ............ : yes
GNOME Keyring support .. : no
MacOS X Keychain support : no

结果如上图可继续安装:
make && make install

2、配置msmtp
在你自己的主目录中新建.msmtprc(注意,msmtprc前面有个点),除给与拥有者读写权(0600,-rw-------)以外不要再有多余。
以Gmail邮箱为例,配置文件内容:
defaults
logfile ~/.msmtp.log
#Gmail
account t4game
tls on
auth on
host mail.t4game.com
port 25
from monitor@t4game.com
tls_certcheck off
user monitor@t4game.com
password 1qaz@t4game
account default : t4game

保存退出。
测试一下:
/usr/local/msmtp/bin/msmtp xxx@t4game.com

随便输入一些内容然后按 ctrl+d 退出,看看是否收到邮件,发件人是不是xxx@gmail.com,收到后则一切正常。
最后再做一步,就能让mail利用msmtp发送邮件了。
3、配置mail
修改/etc/mail.rc在里面加入一条或者在发送邮件的用户的home目录下增加一个.mailrc(注意中间没有 ".") 的文件插入下面一行:

set sendmail="/usr/local/msmtp/bin/msmtp"

保存退出,测试下

echo "this is a test mail" | mail -s "TEST mail" xxx@t4game.com

去邮箱看看是否收到邮件。注意这样修改以后mail的log不会写在 /var/log/maillog上了,而是~/.msmtp.log
备注:如果输入mail提示:
-bash: mail: command not found
则需要输入命令安装mail
yum -y install mailx

如果输入ftp提示:
-bash: ftp: command not found
则需要输入命令安装ftp客户端
5.x版本的执行:
rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/ftp-0.17-35.el5.i386.rpm

6.x版本的执行:
rpm -Uvh http://mirror.centos.org/centos/6/os/i386/Packages/ftp-0.17-51.1.el6.i686.rpm

-------------------------End-------------------------
分页: 5/7 第一页 上页 1 2 3 4 5 6 7 下页 最后页 [ 显示模式: 摘要 | 列表 ]