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-size=200M # 清理系统日志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_FILE"6. 命令学习建议
从我多年的经验来看,掌握Linux命令有几个关键点:
- 理解命令的常用选项(如
-r表示递归) - 善用
man和--help查看文档 - 建立自己的命令备忘清单
- 定期复习常用命令组合
- 在测试环境大胆尝试新命令
推荐的学习路径:
- 先掌握
ls/cd/mkdir等基础命令 - 然后学习
grep/awk/sed等文本处理 - 接着研究
systemctl/cron等系统服务 - 最后深入
iptables/tcpdump等网络工具
记住:Linux命令的学习是渐进式的。我至今仍会不时发现一些命令的新用法。保持好奇心和实践精神,命令行终将成为你得心应手的工具。
