nginx日志访问量前十的ip怎么统计?
awk '{array[$1]++}END{for (ip in array)print ip,array[ip]}' access.log |sort -k2 -rn|head
如何删除/var/log/下.log结尾的30天前的日志?
find /var/log/ -type f -name .*.log -mtime 30|xargs rm -f
每隔一秒高亮显示网络链接数的变化情况:
watch -n 1 -d netstat -ant
监测当前目录中test.txt文件的变化:
watch -d 'ls -l|grep test.txt'
watch -n1 -d "netstat -an | awk '/tcp/ {print \$6}'| sort | uniq -c"
如果在只是想匹配模式的上下几行,grep可以实现。
grep -5 'parttern' inputfile //打印匹配行的前后5行
grep -C 5 'parttern' inputfile //打印匹配行的前后5行
grep -A 5 'parttern' inputfile //打印匹配行的后5行
grep -B 5 'parttern' inputfile //打印匹配行的前5行
搜索inputfile中满足parttern的内容的行号
grep -n 'parttern' inputfile
查看某文件inputfile指定行号(90)后的内容
tail -n +90 inputfile
查看文件inputfile的第190行到196行
sed -n '114,196p' inputfile
删除0字节文件查看文件
find -type f -size 0 -exec rm -rf {} \;
查看进程
# 按内存从大到小排列
ps -e -o "%C : %p : %z : %a"|sort -k5 -nr
# 按 CPU 利用率从大到小排列
ps -e -o "%C : %p : %z : %a"|sort -nr
打印 cache 里的URL
grep -r -a jpg /data/cache/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}'
查看 http 的并发请求数及其 TCP 连接状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
匹配 Root 一行,将 no 替换成 yes
sed -i '/Root/s/no/yes/' /etc/ssh/sshd_config
如何杀掉 MySQL 进程
ps aux |grep mysql |grep -v grep |awk '{print $2}' |xargs kill -9 (从中了解到awk的用途)
killall -TERM mysqld
kill -9 `cat /usr/local/apache2/logs/httpd.pid` 试试查杀进程PID
显示运行 3 级别开启的服务:
ls /etc/rc3.d/S* |cut -c 15- (从中了解到cut的用途,截取数据)
如何在编写 SHELL 显示多个信息,用 EOF
cat << EOF
+--------------------------------------------------------------+
| === Welcome to Tunoff services === |
+--------------------------------------------------------------+
EOF
for 的巧用(如给 MySQL 建软链接)
cd /usr/local/mysql/bin
for i in *
do ln /usr/local/mysql/bin/$i /usr/bin/$i
done
取 IP 地址
ifconfig eth0 |grep "inet addr:" |awk '{print $2}'| cut -c 6-
或者
ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
内存的大小
free -m |grep "Mem" | awk '{print $2}'
netstat使用
netstat -an -t | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
因为同事要统计一下服务器下面所有的 jpg 的文件的大小,写了个 SHELL 给他来统计。原来用 xargs 实现,但他一次处理一部分。搞的有多个总和……,下面的命令就能解决。
find / -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}'
CPU 的数量
cat /proc/cpuinfo |grep -c processor
CPU负载
cat /proc/loadavg
找出占用空间最多的文件或目录
du -cks * | sort -rn | head -n 10
磁盘 I/O 负载
iostat -x 1 2
网络负载
sar -n DEV
网络错误
netstat -i
网络连接数目
netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n
进程总数
ps aux | wc -l
核心日志
dmesg
打开文件数目
lsof | wc -l
tcpdump 抓包,用来防止80端口被人攻击时可以分析数据
tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts
然后检查IP的重复数并从小到大排序 注意 “-t\ +0” 中间是两个空格
less pkts | awk {'printf $3"\n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"\n"'} | sort -n -t\ +0
查看有多少个活动的 php-cgi 进程
netstat -anp | grep php-cgi | grep ^tcp | wc -l
查看系统自启动的服务
chkconfig --list | awk '{if ($5=="3:on") print $1}'
kudzu 查看网卡型号
kudzu --probe --class=network