同样的Linux系统,有人还在逐条敲命令,有人已经用脚本实现自动化运维。差距不在经验,而在对命令行工具链的掌握深度。今天,送上这份压箱底的100条指令清单上篇50条,建议收藏,用到时随时查阅。
在Linux的世界里,命令行是最高效的交互方式。但真正的高手,不是记住所有命令,而是知道在什么场景下用什么命令。
文件与磁盘类:
1. 查找大文件
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -h
场景:磁盘空间告警,需要快速找到哪些文件占用了大量空间。
说明:-size +100M查找大于100MB的文件,sort -k5 -h按人类可读的大小排序。du -sh /* 2>/dev/null | sort -hr | head -10
场景:想知道根目录下哪些目录最占空间。
说明:-s汇总,-h人类可读,sort -hr按大小倒序。ls -l | grep "^-" | wc -l
场景:统计当前目录下有多少个普通文件。
说明:grep "^-"匹配以-开头的行(普通文件),wc -l计数。
4. 批量重命名文件
rename 's/\.txt$/\.bak/' *.txt
场景:想把当前目录下所有.txt文件改成.bak。
说明:rename支持Perl正则表达式,比写循环更简洁。
5. 统计文件行数
find . -name "*.log" -exec wc -l {} \;
场景:想知道所有日志文件的总行数,用于评估日志量。
进程与性能类:
6. 找出消耗CPU最高的进程
ps aux --sort=-%cpu | head -10
场景:服务器负载突然升高,想找出“罪魁祸首”。
说明:--sort=-%cpu按CPU使用率降序排列。
7. 找出消耗内存最高的进程
ps aux --sort=-%mem | head -10
场景:内存不足时,找出内存大户。
说明:同上,按内存使用率排序。
8. 查看进程树
场景:想知道某个进程创建了哪些子进程。
说明:-p显示PID,方便后续操作。场景:启动服务提示“端口已被占用”,想知道谁在用。
说明:ss是netstat的现代替代品,-tulpn显示监听端口及对应进程。
10. 实时查看日志
tail -f /var/log/messages | grep ERROR
场景:实时监控日志,只关心错误信息。
说明:tail -f实时跟踪,管道给grep过滤。
系统信息类:
11. 查看系统启动时间
场景:想知道服务器上次重启是什么时候。
说明:输出系统最后一次启动时间。
12. 查看当前连接数
netstat -an | grep ESTABLISHED | wc -l
场景:粗略评估当前服务负载。
说明:统计已建立的TCP连接数。
13. 查看TCP连接状态统计
netstat -n | awk '/^tcp/ {print $6}' | sort | uniq -c
场景:想知道当前连接中ESTABLISHED、TIME_WAIT各有多少。
说明:awk提取第6列(状态字段),sort+uniq -c统计。
14. 查看系统发行版信息
场景:接手一台服务器,想知道装的是什么系统。
说明:显示操作系统名称、版本等。
15. 查看内核版本
批量操作类:
16. 批量创建用户
for user in user{1..10}; do useradd $user; echo "$user:pass123" | chpasswd; done
场景:实验室环境需要创建10个测试用户。
说明:{1..10}生成序列,循环批量创建。
17. 批量修改文件内容
find . -name "*.conf" -exec sed -i 's/old_ip/new_ip/g' {} \;
场景:迁移服务后,需要批量修改配置文件中的IP地址。
说明:find找到所有.conf文件,sed -i直接修改文件。
18. 批量压缩日志
for file in *.log; do gzip "$file"; done
场景:日志轮转前,手动压缩旧日志。
说明:循环压缩,注意文件名有空格时加引号。
19. 批量修改文件权限
find . -type f -exec chmod 644 {} \;find . -type d -exec chmod 755 {} \;
场景:上传文件后,需要统一设置权限。
说明:文件644(rw-r--r--),目录755(rwxr-xr-x)。
20. 批量删除旧文件
find /tmp -type f -name "*.tmp" -mtime +7 -delete
场景:清理7天前的临时文件。
说明:-mtime +7修改时间超过7天,-delete直接删除(慎用!)。
文本处理类:
21. 查看历史命令使用频率
history | awk '{print $2}' | sort | uniq -c | sort -rn | head -20
场景:想知道自己最常用的20个命令是什么。
说明:提取命令名,统计频率,很有趣的自我分析。
22. 提取文件中的IP地址
grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' access.log | sort | uniq -c | sort -rn
场景:分析访问日志,统计哪些IP访问最多。
说明:-o只输出匹配部分,-E扩展正则。
23. 找出重复行
场景:检查配置文件是否有重复项。
说明:uniq -d只显示重复的行。
24. 文件分割
split -l 1000 bigfile.txt part_
场景:文件太大打不开,想分成小文件处理。
说明:每1000行分割成一个文件,前缀为part_。
25. 文件合并
cat part_* > original.txt
场景:分割处理后,需要合并回原文件。
说明:cat按文件名顺序合并。
系统管理类:
26. 生成随机密码
场景:需要生成一个安全的临时密码。
说明:输出12字节的base64编码,约16个字符。
27. 定时任务管理
(crontab -l 2>/dev/null; echo "0 */6 * * * /scripts/check.sh") | crontab -
场景:想添加一个cron任务,同时保留原有任务。
说明:先列出原有任务,加上新任务,再一次性写入。
28. 查看服务依赖
systemctl list-dependencies sshd
场景:想知道sshd服务依赖哪些单元。
说明:显示单元依赖树,方便排查启动问题。
29. 查看启动耗时
systemd-analyze blame | head -10
场景:服务器启动慢,想找出哪些服务拖后腿。
说明:按初始化耗时排序,显示最慢的10个服务。
30. 防火墙规则备份
iptables-save > iptables.rules
场景:修改防火墙前先备份,防止改错无法恢复。
说明:保存当前规则到文件。系统追踪类:
31. 追踪系统调用
strace -p PID -e trace=file,network
场景:怀疑进程在读写哪个文件、连接哪个网络。
说明:-e trace=file,network只追踪文件和网络相关调用,减少噪音。
32. 追踪库函数调用
ltrace -p PID -e malloc,free
场景:怀疑有内存泄漏,想看内存分配释放情况。
说明:追踪动态库调用,-e指定函数名。
33. 查看进程打开的文件
场景:遇到“Too many open files”错误,查看当前打开文件数。
说明:lsof -p PID列出进程打开的所有文件描述符。
34. 查看哪个进程在使用某个文件
场景:想修改日志文件,提示“设备或资源忙”。
说明:找出谁占用了这个文件。
35. 查看系统调用统计
场景:想知道进程主要在做什么系统调用,分析性能瓶颈。
说明:运行一段时间后按Ctrl+C,输出统计报告。
性能分析类:
36. 分析磁盘IO
场景:系统响应慢,怀疑磁盘IO是瓶颈。
说明:-x显示扩展统计,1 5每秒一次共5次。
37. 查看IO等待进程
场景:想知道哪些进程在大量读写磁盘。
说明:-o只显示正在IO的进程。
38. 网络抓包分析
tcpdump -i eth0 -c 100 -w capture.pcap
场景:怀疑网络有问题,需要抓包分析。
说明:-c 100抓100个包,-w保存文件,用Wireshark分析。
39. 查看网络带宽使用
场景:想知道哪些连接在占用带宽。
说明:交互式工具,显示实时带宽使用情况。
40. 查看内存分配详情
cat /proc/meminfo | grep -E "^(MemTotal|MemFree|Cached|Buffers)"
场景:free -h不够详细,想看缓存、缓冲区的具体值。
说明:直接读取内核内存信息。
硬件诊断类:
41. 查看CPU信息
lscpu | grep -E "Model name|CPU\(s\)|MHz"
场景:想知道服务器CPU型号、核心数、频率。
说明:过滤关键信息,避免输出太多。
42. 查看内存硬件信息
dmidecode -t memory | grep -E "Size|Type|Speed"
场景:需要确认物理内存插槽使用情况。
说明:需要root权限,显示内存硬件详细信息。
43. 查看硬盘健康状态
场景:怀疑硬盘即将损坏,提前检查。
说明:需要安装smartmontools,-H查看健康状态。
44. 测试磁盘读写速度
dd if=/dev/zero of=/tmp/test bs=1M count=100 conv=fdatasync
场景:想粗略测试磁盘写入性能。
说明:conv=fdatasync确保数据真正写入磁盘,不计缓存。
45. 查看PCI设备信息
lspci -v | grep -A 10 "Ethernet"
场景:想确认网卡型号和驱动。
说明:-v详细信息,-A 10显示匹配行后10行。
日志与调试类:
46. 查看内核环缓冲区
场景:硬件问题、驱动报错通常在这里。
说明:-T显示人类可读的时间戳。
47. 跟踪内核事件
trace-cmd record -e sched_switch sleep 10trace-cmd report
场景:想分析调度器行为、任务切换情况。
说明:trace-cmd是ftrace的前端,功能强大。
48. 动态追踪内核函数
perf probe --add tcp_sendmsgperf record -e probe:tcp_sendmsg -aR sleep 10perf script
场景:想追踪TCP发送函数的调用情况。
说明:perf是性能剖析利器,支持动态探针。
49. 查看应用程序错误日志
journalctl -u nginx --since "1 hour ago" -p err
场景:想看nginx过去1小时的错误日志。
说明:-p err只显示ERROR及以上级别。
50. 实时监控日志并触发动作
tail -f /var/log/app.log | while read line; do if echo "$line" | grep -q "FATAL"; then curl -X POST -d "text=$line" https://alert-server/webhook fidone
场景:日志中出现致命错误时,实时发送告警。
说明:结合管道和条件判断,实现自动化响应。关注我,为您分享更多的IT知识!后期为您整理分享进阶下篇,记得点赞收藏哟!