公司动态
Linux运维必备的20个高效命令行工具
1. Linux运维工程师的日常工具箱作为一名在Linux环境下摸爬滚打多年的老运维我深知命令行工具就是我们的瑞士军刀。每天与服务器打交道没有趁手的命令就像战士上战场没带枪。今天要分享的这20个命令都是经过实战检验的生存必备技能它们构成了Linux运维工作的基础骨架。这些命令之所以被称为必用是因为它们覆盖了系统监控、故障排查、性能分析、文件操作等核心运维场景。从查看系统状态的top到分析日志的grep再到网络诊断的netstat每一个都是解决问题的利器。掌握它们不仅能提高工作效率更能让你在关键时刻快速定位问题。提示虽然图形化工具越来越强大但在服务器环境、远程连接或自动化脚本中命令行仍然是不可替代的。这也是为什么专业运维人员必须精通这些基础命令。2. 系统监控与状态查看命令2.1 top - 实时系统监控top命令是Linux下的任务管理器它能实时显示系统资源使用情况。我习惯使用top -c查看完整命令路径用1键展开多核CPU显示用ShiftM按内存排序进程。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 pattern5.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 # 搜索历史 CtrlR8.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 llls -alh alias myipcurl ifconfig.me理解命令背后的原理比记住命令更重要。知道ps aux中每一列的含义才能在排查问题时有的放矢。生产环境执行破坏性命令前如rm、kill先用echo或-n参数测试输出确认无误再实际执行。建立自己的命令手册记录解决特定问题的命令组合。比如MySQL连接数暴增排查步骤、磁盘空间快速清理方法等。定期复习和更新命令知识。Linux工具链在不断进化比如netstat被ss取代ifconfig被ip取代等。在关键操作前创建检查点。比如修改重要配置文件前先备份执行批量操作前先在小范围测试。理解命令的返回值。在脚本中检查$?可以判断上条命令是否成功执行。善用命令历史。history配合grep可以快速找回之前用过的复杂命令。