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