linux实用命令

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