1. Linux运维工程师的日常工具箱
作为一名在Linux环境下摸爬滚打多年的老运维,我深知命令行工具就是我们的瑞士军刀。每天与服务器打交道,没有趁手的命令就像战士上战场没带枪。今天要分享的这20个命令,都是经过实战检验的生存必备技能,它们构成了Linux运维工作的基础骨架。
这些命令之所以被称为"必用",是因为它们覆盖了系统监控、故障排查、性能分析、文件操作等核心运维场景。从查看系统状态的top,到分析日志的grep,再到网络诊断的netstat,每一个都是解决问题的利器。掌握它们不仅能提高工作效率,更能让你在关键时刻快速定位问题。
提示:虽然图形化工具越来越强大,但在服务器环境、远程连接或自动化脚本中,命令行仍然是不可替代的。这也是为什么专业运维人员必须精通这些基础命令。
2. 系统监控与状态查看命令
2.1 top - 实时系统监控
top命令是Linux下的任务管理器,它能实时显示系统资源使用情况。我习惯使用top -c查看完整命令路径,用1键展开多核CPU显示,用Shift+M按内存排序进程。
top - 15:30:45 up 32 days, 2:15, 3 users, load average: 0.08, 0.03, 0.01 Tasks: 112 total, 1 running, 111 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 8000000 total, 2000000 free, 3000000 used, 3000000 buff/cache KiB Swap: 2000000 total, 2000000 free, 0 used. 4000000 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1234 root 20 0 400000 50000 8000 S 0.3 0.6 10:20.45 /usr/bin/python2.2 vmstat - 系统性能概览
vmstat提供了更全面的系统性能数据,包括进程、内存、交换区、IO和CPU活动。我常用vmstat 1 5表示每秒采样一次,共采样5次:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 2000000 300000 500000 0 0 5 20 100 150 1 1 98 0 02.3 df和du - 磁盘空间管理
df -h以人类可读格式显示磁盘使用情况,而du -sh *则显示当前目录下各文件/文件夹的大小。这两个命令组合使用可以快速定位磁盘空间问题:
# 查看挂载点使用情况 df -h # 查找大文件 du -sh /* | sort -h3. 网络诊断与配置命令
3.1 netstat/ss - 网络连接分析
虽然netstat正在被ss取代,但两者都值得掌握。我常用netstat -tulnp查看监听端口,用ss -s查看连接统计:
# 查看TCP连接状态分布 ss -ant | awk '{print $1}' | sort | uniq -c # 查看占用某端口的进程 netstat -tulnp | grep 803.2 ping和traceroute - 网络连通性测试
ping测试基本连通性,而traceroute(或mtr)显示路径上的每一跳。注意生产环境要慎用持续ping:
# 快速连通性测试 ping -c 4 example.com # 路由追踪 traceroute -n example.com3.3 ifconfig/ip - 网络接口配置
ifconfig逐渐被ip命令取代,但两者都需要熟悉。配置IP地址、查看接口状态是日常操作:
# 查看所有接口 ip addr show # 临时添加IP ip addr add 192.168.1.100/24 dev eth04. 文件与文本处理命令
4.1 grep - 文本搜索利器
grep是日志分析的瑞士军刀。我常用的组合:
# 递归搜索包含"error"的文件 grep -r "error" /var/log/ # 显示匹配行前后内容 grep -A 3 -B 2 "critical" app.log # 使用正则表达式 grep -E "[0-9]{3}-[0-9]{4}" access.log4.2 find - 文件查找专家
find命令功能强大,我常用它来清理旧日志或查找特定文件:
# 查找7天前修改的.log文件 find /var/log -name "*.log" -mtime +7 # 查找并删除临时文件 find /tmp -type f -name "*.tmp" -delete4.3 sed和awk - 文本处理双雄
sed适合简单的行编辑,awk则擅长字段处理:
# 替换文本 sed 's/foo/bar/g' file.txt # 提取第一列并求和 awk '{sum+=$1} END {print sum}' data.txt5. 进程管理与系统控制
5.1 ps - 进程快照
ps命令有多种风格,我推荐掌握BSD风格的参数:
# 查看完整格式的进程列表 ps aux # 查看特定用户的进程 ps -u username # 查看进程树 ps -ef --forest5.2 kill和pkill - 进程控制
正确终止进程是运维基本功。我常用:
# 先尝试优雅终止 kill -15 PID # 强制终止 kill -9 PID # 按名称终止 pkill -f "pattern"5.3 systemctl - 服务管理
在systemd系统中,服务管理离不开systemctl:
# 查看服务状态 systemctl status nginx # 启停服务 systemctl start/stop/restart service # 设置开机启动 systemctl enable service6. 权限与用户管理
6.1 chmod和chown - 文件权限控制
# 设置权限 chmod 755 script.sh # 递归修改所有者 chown -R user:group /path/6.2 passwd和useradd - 用户管理
# 修改密码 passwd username # 创建用户 useradd -m -s /bin/bash newuser7. 压缩与归档命令
7.1 tar - 文件打包
# 创建压缩包 tar -czvf archive.tar.gz /path/ # 解压 tar -xzvf archive.tar.gz7.2 gzip和zip - 压缩工具
# 压缩文件 gzip file.txt # 创建zip压缩包 zip -r archive.zip /path/8. 其他实用命令
8.1 history - 命令历史
# 查看历史命令 history # 搜索历史 Ctrl+R8.2 crontab - 定时任务
# 编辑定时任务 crontab -e # 查看当前任务 crontab -l8.3 tail - 实时日志查看
# 查看最后100行 tail -n 100 logfile # 实时跟踪 tail -f logfile9. 命令组合与高级技巧
真正的Linux高手在于如何组合这些基础命令。比如:
# 统计访问日志中每个IP的出现次数 cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -20 # 查找内存占用最高的5个进程 ps aux | sort -nk +4 | tail -510. 运维命令使用心得
在实际运维工作中,我发现以下几点特别重要:
掌握命令的常用选项比记住所有选项更实用。比如
grep -r、find -name、tar -z等高频组合。使用
man命令查看手册页是学习的最佳途径。比如man grep会显示所有选项和示例。将常用命令组合保存为脚本或别名能极大提高效率。比如在
.bashrc中添加:alias ll='ls -alh' alias myip='curl ifconfig.me'理解命令背后的原理比记住命令更重要。知道
ps aux中每一列的含义,才能在排查问题时有的放矢。生产环境执行破坏性命令前(如
rm、kill),先用echo或-n参数测试输出,确认无误再实际执行。建立自己的命令手册,记录解决特定问题的命令组合。比如"MySQL连接数暴增排查步骤"、"磁盘空间快速清理方法"等。
定期复习和更新命令知识。Linux工具链在不断进化,比如
netstat被ss取代,ifconfig被ip取代等。在关键操作前创建检查点。比如修改重要配置文件前先备份,执行批量操作前先在小范围测试。
理解命令的返回值。在脚本中检查
$?可以判断上条命令是否成功执行。善用命令历史。
history配合grep可以快速找回之前用过的复杂命令。