Linux系统命令大全:从基础到进阶运维实战
1. Linux系统命令概述作为一个在Linux环境下摸爬滚打多年的老运维我深知命令行操作是Linux系统的灵魂所在。与图形界面相比命令行不仅效率更高而且能完成更复杂的系统管理任务。Linux命令就像瑞士军刀每个工具都有其特定用途组合起来能解决各种系统问题。刚接触Linux时我也曾被各种命令搞得晕头转向。但经过多年实践我发现掌握命令的关键在于理解其设计逻辑。Linux命令通常遵循动词对象的命名规则比如useradd创建用户、chmod修改权限。这种一致性让命令学习曲线变得平缓。2. Linux命令分类解析2.1 文件与目录操作文件操作是Linux中最基础也最常用的命令类别。以下是我总结的核心命令集ls -alh # 详细列出所有文件(包括隐藏文件)人类可读格式 cp -av source dest # 保留属性的递归复制 mv -i old new # 交互式重命名 rm -rf dir # 强制递归删除(慎用) find / -name *.log -mtime 30 # 查找30天前的日志文件警告使用rm -rf时要格外小心特别是在root权限下。我曾亲眼见过有人误删整个生产环境的数据。2.2 系统信息查询了解系统状态是运维的基本功。这些命令能快速获取系统信息top -c # 动态进程监控(带完整命令) free -h # 人性化显示内存使用 df -Th # 带文件系统类型的磁盘空间 uptime # 系统运行时间 uname -a # 全部系统信息 lscpu # CPU详细信息2.3 用户与权限管理Linux的多用户特性要求我们熟练掌握权限控制useradd -m -s /bin/bash username # 创建用户并建立家目录 passwd username # 设置密码 usermod -aG sudo username # 添加sudo权限 chown user:group file # 修改文件所有者 chmod 755 script.sh # 设置rwxr-xr-x权限2.4 网络相关命令网络配置和诊断是Linux运维的常见任务ip addr show # 显示网络接口(替代ifconfig) ping -c 4 example.com # 发送4个测试包 traceroute google.com # 路由追踪 netstat -tulnp # 查看监听端口 ss -s # 更现代的socket统计 curl -v http://example.com # 详细HTTP请求3. 实用命令组合技巧3.1 管道与重定向命令组合能发挥Linux的真正威力grep error /var/log/syslog | wc -l # 统计错误日志数量 find /var/log -name *.log -exec gzip {} \; # 压缩所有日志 cat access.log | awk {print $1} | sort | uniq -c | sort -nr # 统计访问IP3.2 后台任务管理长时间运行的任务需要妥善管理nohup ./longrun.sh # 脱离终端后台运行 screen -S session_name # 创建持久会话 tmux new -s mywork # 更现代的终端复用 jobs -l # 查看后台任务 fg %1 # 将任务1调到前台3.3 系统监控组合实时监控系统健康状态watch -n 1 df -h; free -h # 每秒刷新磁盘和内存 dstat -cdnm # 综合性能监控 iotop -o # 实时磁盘IO监控 htop # 增强版top4. 常见问题排查指南4.1 磁盘空间告急当df显示空间不足时可以这样排查du -sh /* 2/dev/null | sort -h # 查找大目录 lsof L1 # 查看被删除但仍占用的文件 journalctl --vacuum-size200M # 清理系统日志4.2 性能瓶颈分析系统变慢时的诊断流程top查看CPU负载vmstat 1观察系统整体状态iostat -x 1分析磁盘IOsar -n DEV 1检查网络流量perf top进行性能剖析4.3 网络连接问题网络不通时的检查步骤ping 8.8.8.8 # 测试基础连通性 dig example.com # DNS解析检查 mtr example.com # 综合路由诊断 tcpdump -i eth0 port 80 # 抓包分析5. 进阶命令使用技巧5.1 正则表达式应用grep和sed配合正则能处理复杂文本grep -P (\d{3}-){2}\d{4} file # 匹配电话号码 sed -i s/old/new/g file # 批量替换文本 awk /pattern/ {print $3,$5} file # 提取特定字段5.2 安全相关命令系统安全检查常用命令last -a # 登录历史 who -b # 系统启动时间 find / -perm -4000 # 查找SUID文件 rkhunter --check # rootkit检测5.3 自动化脚本编写基础shell脚本模板#!/bin/bash # 描述这是一个示例脚本 set -euo pipefail # 严格模式 LOG_FILE/var/log/myscript.log TIMESTAMP$(date %Y-%m-%d %T) echo [$TIMESTAMP] 脚本启动 $LOG_FILE # 主逻辑 if [ $(id -u) -ne 0 ]; then echo 请使用root运行 2 exit 1 fi backup_dir/backup/$(date %Y%m%d) mkdir -p $backup_dir tar -czf $backup_dir/home.tar.gz /home echo [$TIMESTAMP] 备份完成 $LOG_FILE6. 命令学习建议从我多年的经验来看掌握Linux命令有几个关键点理解命令的常用选项如-r表示递归善用man和--help查看文档建立自己的命令备忘清单定期复习常用命令组合在测试环境大胆尝试新命令推荐的学习路径先掌握ls/cd/mkdir等基础命令然后学习grep/awk/sed等文本处理接着研究systemctl/cron等系统服务最后深入iptables/tcpdump等网络工具记住Linux命令的学习是渐进式的。我至今仍会不时发现一些命令的新用法。保持好奇心和实践精神命令行终将成为你得心应手的工具。