例行维护、问题排查等是运维工程师的日常工作,杜老师收集了 30 个常用命令,推荐给会使用到的小伙伴们,如果您有更多的好用命令欢迎分享给我们!
删除文件
1 | find -type f -size 0 -exec rm -rf {} \; |
注意:删除 0 字节的文件。
查看进程
按内存使用率从大到小排列:
1 | ps -e -o "%C : %p : %z : %a" | sort -k5 -nr |
按 CPU 从大到小排列:
1 | ps -e -o "%C : %p : %z : %a" | sort -nr |
输出信息
1 | grep -r -a jpg /data/cache/* | strings | grep "http:" | awk -F 'http:' '{print "http:"$2;}' |
注意:打印 cache 里的 URL。
查看连接状态
1 | netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' |
注意:查看 http 的并发请求数及其 TCP 连接状态。
替换
1 | sed -i '/Root/s/no/yes/' /etc/ssh/sshd_config |
注意:sed 在这个文里 Root 的一行,匹配 Root 行,将 no 替换成 yes。
杀掉进程
1 | ps aux | grep mysql | grep -v grep | awk '{print $2}' | xargs kill -9 |
注意:杀掉 MySQL 的进程。
显示服务
1 | ls /etc/rc3.d/S* | cut -c 15- |
注意:显示运行 3 级别开启的服务。
显示多个信息
1 | cat << EOF |
注意:用 EOF 在编写 Shell 显示多个信息。
for 的巧用
1 | cd /usr/local/mysql/bin |
注意:给 MySQL 建软链接。
取 IP 地址
1 | 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}'
。
内存大小
1 | free -m | grep "Mem" | awk '{print $2}' |
注意:截取内存大小数据。
查看端口
1 | netstat -ant | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort |
注意:查看 80 端口的连接信息。
统计文件大小
1 | find / -name *.jpg -exec wc -c {} \; | awk '{print $1}' | awk '{a+=$1} END {print a}' |
注意:统计服务器下面所有 jpg 文件的大小。
CPU 的负载
检查前三个输出值是否超过系统逻辑 CPU 的 4 倍:
1 | cat /proc/loadavg |
检查 %idle 值是否过低:
1 | mpstat 1 1 |
内存空间
1 | free |
注意:检查 free 值是否过低,也可用 cat /proc/meminfo
。
交换空间
1 | vmstat 1 5 |
注意:观察 si 和 so 值是否较大。
磁盘空间
1 | df -h |
注意:检查是否有分区使用率过高,如发现某分区空间接近用尽,可进入该分区的挂载点,用 du -cks * | sort -rn | head -n 10
命令找出占用空间最多的文件或目录。
磁盘负载
1 | iostat -x 1 2 |
注意:检查 I/O 使用率是否过高。
网络负载
1 | sar -n DEV |
注意:检查网络流量是否过高。
网络错误
1 | netstat -i |
注意:检查是否出现网络错误,也可用命令 cat /proc/net/dev
。
网络连接数目
1 | netstat -an | grep -E "^(tcp)" | cut -c 68- | sort | uniq -c | sort -n |
注意:查询网络连接数目。
进程总数
1 | ps aux | wc -l |
注意:检查进程个数是否正常。
可运行的进程数目
1 | vmwtat 1 5 |
注意:列出的是可运行进程的数目,检查是否超过系统逻辑 CPU 的 4 倍。
进程
1 | top -id 1 |
注意:观察是否有异常的进程出现。
用户
1 | who | wc -l |
注意:检查登录用户是否过多「比如超过 50 个」也可用命令 uptime
。
系统日志
检查是否有异常的错误记录:
1 | cat /var/log/rflogview/*errors |
搜寻一些异常的关键字:
1 | grep -i error /var/log/messages |
核心日志
1 | dmesg |
注意:检查是否有异常的错误记录。
系统时间
1 | date |
注意:检查系统时间是否正确。
打开文件数目
1 | lsof | wc -l |
注意:检查打开文件总数是否过多。
杀掉进程
1 | lsof -i :80 | grep -v ID | awk '{print "kill -9",$2}' | sh |
注意:杀掉 80 端口相关的进程。
清除进程
1 | ps -eal | awk '{if ($2 == "Z") {print $4}}' | kill -9 |
注意:清除僵尸进程。
分析数据
1 | tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts |
注意:用 tcpdump 抓包,防止 80 端口被人攻击时可以分析数据。
检查 IP 重复数
1 | less pkts | awk {'printf $3"\n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"\n"'} | sort -n -t\ +0 |
注意:检查 IP 的重复数并从小到大排序。
查看活动进程
1 | netstat -anp | grep php-cgi | grep ^tcp | wc -l |
注意:查看有多少个活动的 php-cgi 进程。
条评论