能用到退休的100条高级Linux命令,解决99%日常问题!17认证网

正规官方授权
更专业・更权威

能用到退休的100条高级Linux命令,解决99%日常问题!

Linux 命令数以千计,但日常运维中 99% 的问题可通过 100 条核心高级命令解决。本文筛选标准:进阶性(非 ls/cd 等基础命令)、不可替代性(解决特定场景痛点)、跨发行版兼容(CentOS/Ubuntu 通用)、实战高频性(源自十年运维经验总结)。

一、文件系统与存储管理(20 条)

1. 高效文件操作

\# 带进度条的递归复制(比cp更可靠)

rsync -ah --progress /data/backup/ user@192.168.1.100:/remote/backup/ 

\# 查找7天前大于1G的日志文件并压缩

find /var/log -mtime +7 -size +1G -name "\*.log" -exec gzip {} \\; 

\# 批量修改文件权限(保留原有权限基础上加执行权)

chmod -R a+x --preserve-root /usr/local/bin/

\# 查找SUID权限文件(安全审计必备)

find / -perm -4000 -type f -exec ls -la {} \\; 2>/dev/null 

2. 存储管理进阶

\# 查看磁盘I/O详情(定位慢盘)

iostat -x 5 3 # 每5秒采样,共3次

\# LVM扩容(实战扩容流程)

lvresize -L +50G /dev/mapper/centos-root && xfs\_growfs /  # XFS文件系统

\# 检测磁盘坏道(非破坏性检测)

badblocks -v /dev/sda1 > bad\_sectors.txt

\# 挂载ISO文件(无需刻录)

mount -o loop /tmp/ubuntu.iso /mnt/iso/

\# 查看文件系统inode使用情况(解决“磁盘未满却无法创建文件”问题)

df -i

3. 归档与压缩技巧

\# 排除特定目录压缩(备份时常用)

tar -czvf backup.tar.gz --exclude=node\_modules /home/project/

\# 分卷压缩大文件(适配网盘上传)

split -b 100M large\_file.tar.gz "large\_file\_part\_"

\# 解压分卷文件

cat large\_file\_part\_\* | tar -xzvf -

\# 计算文件哈希(验证传输完整性)

sha256sum ubuntu.iso > ubuntu.sha256 && sha256sum -c ubuntu.sha256 

二、网络诊断与配置(20 条)

1. 连接状态分析

\# 查看TCP连接状态统计(排查TIME-WAIT堆积)

ss -tan | awk '{print \$1}' | sort | uniq -c 

\# 查找占用80端口的进程(比netstat更高效)

ss -tulnp | grep :80 

\# 实时监控网络流量(按端口分类)

iftop -P -i eth0

\# 查看IP路由表(含网关优先级)

ip route show table all

\# 刷新ARP缓存(解决MAC地址冲突)

ip neigh flush dev eth0 

2. 故障排查工具

\# 动态路由追踪(结合ping与traceroute优势)

mtr -w github.com 

\# 捕获HTTP请求(分析接口异常)

tcpdump -i eth0 -s 0 -A 'tcp port 80 and (((tcp\[12:1] & 0xf0) >> 2) = 0x47455420)' 

\# 测试端口连通性(支持UDP)

nc -zv -u 192.168.1.1 53  # 测试DNS端口

\# DNS深度解析(追踪解析链路)

dig +trace www.baidu.com 

\# 扫描局域网存活主机

nmap -sn 192.168.1.0/24  # 仅ping扫描,不探测端口

3. 网络配置进阶

\# 临时修改MTU(解决jumbo帧问题)

ip link set eth0 mtu 9000 

\# 配置虚拟IP(高可用场景)

ip addr add 192.168.1.100/24 dev eth0 label eth0:0

\# 查看网络接口统计(定位丢包)

ip -s link show eth0 

\# 关闭TCP timestamp(优化高并发连接)

sysctl -w net.ipv4.tcp\_timestamps=0

\# 配置DNS服务器(临时生效)

echo "nameserver 8.8.8.8" > /etc/resolv.conf

三、系统监控与性能调优(15 条)

1. 资源监控工具

\# 按内存使用率排序进程(找出内存黑洞)

ps aux --sort=-%mem | head -10

\# 实时监控系统资源(含磁盘I/O)

htop -s PERCENT\_MEM  # 按内存排序

\# 查看CPU核心详情(含型号与频率)

lscpu | grep -E "Model name|CPU MHz|CPU cores"

\# 监控内存页交换(判断内存是否不足)

vmstat 1 5 # 每1秒输出,共5次

\# 查看系统负载趋势(近1/5/15分钟)

uptime

2. 性能分析命令

\# 分析进程文件句柄(解决“too many open files”)

lsof -p 1234 | wc -l  # 1234为进程PID

\# 查看系统调用(诊断程序异常)

strace -p 1234 -c  # 统计调用频率

\# 监控磁盘IOPS(评估存储性能)

iostat -d 1 5

\# 分析网络吞吐量(按协议分类)

nload -m

\# 查看内核日志(排查硬件故障)

dmesg | grep -i error 

3. 系统信息查询

\# 查看系统版本(通杀所有发行版)

cat /etc/\*release 

\# 查看内核参数(含当前值)

sysctl -a | grep net.ipv4.tcp\_max\_tw\_buckets

\# 查看硬件信息(替代lshw)

dmidecode -t memory  # 仅查看内存信息

\# 查看系统启动时间与运行时长

systemd-analyze

\# 查看已安装软件包(含版本)

dpkg --list | grep nginx  # Debian/Ubuntu

rpm -qa | grep nginx      # CentOS/RHEL

四、安全审计与权限管理(15 条)

1. 账户安全检查

\# 查看所有UID为0的账户(排查隐藏root)

awk -F: '(\$3 == 0) {print}' /etc/passwd 

\# 查找空密码账户

awk -F: '(\$2 == "") {print}' /etc/shadow 

\# 查看sudo权限用户

grep -v "^#" /etc/sudoers | grep "ALL=(ALL)" 

\# 锁定账户(禁止登录但保留文件)

passwd -l testuser

\# 查看最近登录记录

last -n 20 

2. 登录与访问控制

\# 排查SSH暴力破解(统计失败IP)

grep "Failed password" /var/log/auth.log | awk '{print \$11}' | sort | uniq -c | sort -nr 

\# 查看当前登录用户详情

w  # 含IP与操作命令

\# 限制用户SSH登录(仅允许指定IP)

echo "AllowUsers testuser@192.168.1.\*" >> /etc/ssh/sshd\_config

\# 查看SSH连接日志

journalctl -u sshd -f  # 实时追踪

\# 禁用root直接SSH登录

sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd\_config

3. 文件与权限审计

\# 查找全局可写且无粘滞位的目录(安全隐患)

find / -xdev -type d \\( -perm -0002 -a ! -perm -1000 \\) -print 

\# 检查重要文件权限(防止越权访问)

ls -la /etc/passwd /etc/shadow /etc/sudoers 

\# 监控文件变更(临时追踪配置文件)

watch -n 1 "md5sum /etc/nginx/nginx.conf"

\# 恢复文件权限(基于rpm数据库)

rpm -Va nginx  # CentOS/RHEL 

\# 查找最近修改的敏感文件

find /etc -mtime -1 -type f  # 1天内修改的/etc文件

五、容器与虚拟化管理(10 条)

1. Docker 核心命令

\# 查看容器资源占用(按CPU排序)

docker stats --no-stream --format "{{.Name}} {{.CPUPerc}} {{.MemUsage}}" | sort -k2 -r

\# 清理悬空镜像与容器(释放磁盘)

docker system prune -a -f

\# 查看容器详细配置(含网络与挂载)

docker inspect nginx-container

\# 进入容器(带终端与环境变量)

docker exec -it --env "TERM=xterm" nginx-container /bin/bash

\# 备份容器数据卷

docker run --rm -v nginx-data:/source -v \$(pwd):/backup alpine tar -czvf /backup/nginx-backup.tar.gz -C /source .

2. K8s 基础运维

\# 查看Pod资源使用(需metrics-server)

kubectl top pod -n default

\# 查看Pod事件(排查启动失败)

kubectl describe pod nginx-pod

\# 进入Pod容器

kubectl exec -it nginx-pod -c nginx-container -- /bin/sh

\# 复制文件到Pod

kubectl cp local-file.txt nginx-pod:/tmp/

\# 查看节点资源状态

kubectl describe node node-1

六、文本处理与日志分析(10 条)

1. 三剑客高级用法

\# 提取Nginx日志中的404请求(含URL与IP)

awk '\$9 == 404 {print \$1, \$7}' /var/log/nginx/access.log 

\# 批量替换配置文件内容(跨目录)

sed -i 's/old\_domain.com/new\_domain.com/g' \`grep -rl "old\_domain.com" /etc/\` 

\# 高亮日志中的ERROR(实时追踪)

tail -f /var/log/syslog | grep --color=auto -i "error" 

\# 统计不同状态码的请求数

awk '{count\[\$9]++} END {for(code in count) print code, count\[code]}' /var/log/nginx/access.log

\# 提取JSON日志中的特定字段

jq '.timestamp, .message' /var/log/app/json.log

2. 日志管理技巧

\# 查看日志中最频繁的IP(排查攻击)

grep -oE "\b(\[0-9]{1,3}\\.){3}\[0-9]{1,3}\b" /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

\# 按时间范围过滤日志(ISO格式)

sed -n '/2025-12-01T00:00:00/,/2025-12-01T06:00:00/p' /var/log/syslog

\# 压缩旧日志(保留30天)

find /var/log -name "\*.log" -mtime +30 -exec gzip {} \\;

\# 合并分割日志(按时间排序)

ls -tr access.log.\* | xargs cat > access.log.full

七、备份恢复与自动化(10 条)

1. 备份策略实现

\# 增量备份(仅备份变更文件)

rsync -av --link-dest=/backup/last /data /backup/current  # 硬链接增量

\# 数据库备份(自动压缩)

mysqldump -u root -p'password' --all-databases | gzip > /backup/mysql\_\$(date +%Y%m%d).sql.gz

\# 备份校验(防止备份损坏)

md5sum /backup/backup.tar.gz > /backup/backup.tar.gz.md5 && md5sum -c /backup/backup.tar.gz.md5

\# 定时备份(保留最近7天)

echo "0 1 \* \* \* root /usr/local/bin/backup.sh && find /backup -name '\*.tar.gz' -mtime +7 -delete" >> /etc/crontab 

2. 自动化与脚本工具

\# 查看定时任务(所有用户)

for user in \$(cut -f1 -d: /etc/passwd); do echo "User: \$user"; crontab -u \$user -l 2>/dev/null; done 

\# 监控脚本(内存超80%报警)

while true; do if \[ \$(free | awk '/Mem/{print \$3/\$2\*100}' | cut -d. -f1) -gt 80 ]; then echo "Memory alert" | mail -s "Alert" admin@example.com; fi; sleep 60; done

\# 批量执行命令(多服务器)

for host in \$(cat hosts.txt); do ssh \$host "uptime"; done

\# 查看脚本执行日志(调试crontab)

grep CRON /var/log/syslog

\# 生成随机密码(自动化脚本用)

openssl rand -hex 16

100 条命令只是工具,真正 “能用到退休” 的是组合思维:比如用ss + awk + sort定位连接瓶颈,用find + xargs + gzip清理日志。建议养成查man手册的习惯(如man ss看参数细节),结合--help快速验证用法。运维的核心不是记命令,而是用工具解决问题 —— 这些命令,正是解决问题的最优解。

转自:运维网工

想了解更多干货,可通过下方扫码关注

可扫码添加上智启元官方客服微信👇

未经允许不得转载:17认证网 » 能用到退休的100条高级Linux命令,解决99%日常问题!
分享到:0

评论已关闭。

400-663-6632
咨询老师
咨询老师
咨询老师