Linux核心命令精要:从入门到精通的20%关键命令

Linux核心命令精要:从入门到精通的20%关键命令
1. Linux命令概述与学习路径作为从业15年的Linux系统管理员我经常被问到一个问题Linux命令那么多到底哪些才是真正需要掌握的根据我的经验80%的日常运维工作实际上只需要20%的核心命令就能完成。本文将分享我整理的Linux命令分类体系以及不同阶段开发者应该掌握的命令清单。Linux命令之所以让初学者望而生畏主要因为其三个特点命令数量庞大基础命令约300加上各发行版特有命令可达上千参数组合复杂如find命令有50参数选项存在多种替代方案如文件查看可用cat/less/more/head/tail等提示学习Linux命令时建议先掌握最小可用集再逐步扩展。不要试图一次性记住所有命令参数。2. 文件与目录操作命令精要2.1 基础文件操作三剑客# 查看文件内容适合小文件 cat filename # 分页查看适合大文件 less filename # 支持上下翻页搜索 more filename # 只能向下翻页 # 查看文件首尾 head -n 10 filename # 查看前10行 tail -n 5 filename # 查看后5行 tail -f logfile # 实时追踪日志实际工作中我强烈推荐使用less替代more因为支持双向滚动可回看已浏览内容内置搜索功能按/键搜索不会自动退出more在显示完毕后会直接退出2.2 文件权限管理实战# 查看权限 ls -l filename # 修改权限数字方式 chmod 755 script.sh # 所有者rwx组和其他r-x # 修改权限符号方式 chmod ux,g-w,or filename # 修改所有者 chown user:group filename权限数字表示法记忆技巧4 读(r)2 写(w)1 执行(x)0 无权限常见坑点chmod 777虽然方便但会带来严重安全隐患。生产环境应遵循最小权限原则。2.3 文件查找与处理# 按名称查找 find /path -name *.log # 按大小查找1MB的文件 find / -size 1M # 查找并删除慎用 find /tmp -name *.tmp -delete # 查找并统计 find /var/log -type f | wc -lfind命令的-exec参数特别强大但新手容易出错。安全做法是先测试# 先打印找到的文件 find . -name *.bak -print # 确认无误后再执行操作 find . -name *.bak -exec rm -i {} \;3. 系统监控与进程管理3.1 系统状态监控# 查看系统负载1/5/15分钟平均值 uptime # 动态监控系统资源 top htop # 更友好的top替代品 # 内存使用情况 free -h # 磁盘空间 df -h # 查看挂载点 du -sh * # 查看当前目录大小top命令实用技巧按M按内存排序按P按CPU排序按1显示所有CPU核心详情按q退出3.2 进程管理实战# 查看进程 ps aux | grep nginx # 杀死进程 kill -9 PID # 强制终止 pkill -f pattern # 按名称终止 # 后台运行 nohup command # 退出终端仍运行 # 进程优先级 nice -n 10 command # 低优先级 renice 15 -p PID # 调整已有进程我曾遇到过一个生产事故开发人员直接用kill -9杀死了数据库进程导致数据损坏。正确做法应该是先用普通kill发送SIGTERM等待30秒让进程优雅退出确认无响应后再用kill -94. 网络操作与系统管理4.1 网络配置与诊断# 查看IP地址 ip addr show ifconfig # 较老系统 # 测试连通性 ping example.com traceroute example.com # 端口检查 netstat -tulnp ss -tulnp # 更现代的替代方案 # 下载文件 wget https://example.com/file curl -O https://example.com/file网络问题排查流程ping检测基础连通性telnet/nc测试具体端口traceroute检查路由路径检查本地防火墙规则(iptables/nftables)4.2 包管理工具对比不同Linux发行版的包管理命令系统类型安装软件更新系统搜索软件Debian/Ubuntuapt installapt update apt upgradeapt searchRHEL/CentOSyum installyum updateyum searchArch Linuxpacman -Spacman -Syupacman -Ss个人经验生产环境更新前一定要先测试我曾因盲目执行yum update导致服务不可用。5. 文本处理与Shell技巧5.1 文本处理三巨头# grep过滤文本 grep error logfile grep -v debug logfile # 反向匹配 grep -E error|warn logfile # 正则匹配 # sed流编辑器 sed s/foo/bar/g file # 替换文本 sed -i.bak s/old/new/ file # 原地修改并备份 # awk数据处理 awk {print $1} file # 打印第一列 awk -F: {print $1} /etc/passwd # 指定分隔符实际案例统计Nginx日志中各IP的访问次数awk {print $1} access.log | sort | uniq -c | sort -nr | head -105.2 Shell实用技巧# 历史命令优化 history | grep apt # 查找历史命令 !number # 执行指定编号的历史命令 !! # 上一条命令 # 命令别名 alias llls -alF alias updatesudo apt update sudo apt upgrade # 重定向技巧 command output.txt 21 # 合并标准输出和错误输出 command | tee output.txt # 同时输出到屏幕和文件我在~/.bashrc中常备的别名# 安全操作 alias rmrm -i alias cpcp -i alias mvmv -i # 便捷查看 alias portsnetstat -tulnp alias meminfofree -m -l -t alias diskdf -h6. 进阶命令与性能调优6.1 性能分析工具# CPU分析 perf top sar -u 1 3 # 采样CPU使用率 # IO分析 iostat -x 1 iotop # 内存分析 vmstat 1 pmap -x PID # 网络分析 iftop nethogs性能问题排查黄金命令组合watch -d -n 1 ps -eo pid,user,pcpu,pmem,cmd --sort-pcpu | head -106.2 系统调优参数# 查看内核参数 sysctl -a # 临时修改 sysctl -w vm.swappiness10 # 永久生效写入/etc/sysctl.conf echo vm.swappiness10 /etc/sysctl.conf sysctl -p关键调优参数建议vm.swappiness10减少swap使用net.ipv4.tcp_tw_reuse1快速回收TIME_WAIT连接fs.file-max65535增加文件描述符限制7. 命令组合与自动化脚本7.1 实用命令组合# 查找大文件并排序 find / -type f -size 100M -exec ls -lh {} | sort -k5 -rh # 批量重命名 for file in *.jpg; do mv $file ${file%.jpg}_backup.jpg; done # 监控目录变化 watch -n 1 ls -l /path # 并行处理 find . -type f -print0 | xargs -0 -P 4 -I {} process_file {}7.2 安全注意事项慎用通配符rm -rf *可能误删重要文件避免直接root操作能用sudo就不用su危险命令防护alias rmrm -i set -o noclobber # 防止重定向覆盖重要操作前先dry runrsync -nav source/ dest/ # 模拟同步8. 学习资源与持续提升8.1 内置帮助系统# 命令手册 man ls man -k keyword # 搜索相关手册 # 简要帮助 ls --help help cd # shell内置命令帮助 # 信息页 info coreutils # 命令描述 whatis ls8.2 推荐学习路径基础阶段1-2周文件操作ls/cd/cp/mv/rm文本查看cat/less/head/tail权限管理chmod/chown中级阶段1个月文本处理grep/sed/awk进程管理ps/top/kill网络工具ping/netstat/ssh高级阶段持续学习性能分析perf/strace/vmstat系统调优sysctl/tuned自动化shell脚本/ansible最后分享一个我常用的命令练习方法每天选择3个新命令通过man了解后在实际场景中尝试使用并记录到个人知识库中。坚持3个月后你会发现Linux命令不再可怕。