抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

例行维护、问题排查等是运维工程师的日常工作,杜老师收集了 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
2
3
4
5
cat << EOF
+-------------------------------------------+
| === Welcome to dusays.com === |
+-------------------------------------------+
EOF

注意:用 EOF 在编写 Shell 显示多个信息。

for 的巧用

1
2
3
4
5
cd /usr/local/mysql/bin
for i in *
do
ln /usr/local/mysql/bin/$i /usr/bin/$i
done

注意:给 MySQL 建软链接。

取 IP 地址

1
2
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
2
grep -i error /var/log/messages
grep -i fail /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 进程。

评论