1. Linux命令学习笔记与总结概述作为一名Linux系统管理员我整理这份笔记的初衷是为了帮助新手快速掌握Linux命令的精髓。Linux命令是操作系统的核心交互方式从文件管理到进程控制从网络配置到系统监控几乎所有操作都离不开命令行。与图形界面相比命令行操作更加高效、灵活且资源占用低特别适合服务器环境。这份笔记不同于普通的命令手册它融合了我十年运维工作中积累的实战经验和技巧。我会重点讲解那些最常用但又最容易出错的命令比如find、grep、sed等同时也会分享一些高级用法如管道组合、正则表达式应用等。学习Linux命令就像学习一门新语言需要理解其语法规则和表达逻辑。2. Linux命令基础与核心概念2.1 文件系统基础操作文件操作是Linux中最基础也是最重要的部分。让我们从最常用的几个命令开始ls命令这是你进入Linux世界的第一把钥匙。除了简单的ls列出文件外我强烈建议养成使用ls -l的习惯它能显示文件的详细信息包括权限、所有者、大小和修改时间。ls -a可以显示隐藏文件以点开头的文件而ls -lh则以更人性化的方式显示文件大小。cd命令切换目录看似简单但有几个技巧值得掌握。cd -可以快速回到上一个工作目录cd ~直接回到用户主目录而cd ..则是返回上级目录。pwd命令显示当前工作目录的完整路径。在复杂的目录结构中这个命令能帮你确认自己的位置。提示在Linux中路径分为绝对路径从根目录/开始和相对路径从当前目录开始。理解这两种路径的区别对文件操作至关重要。2.2 文件内容查看与编辑查看和编辑文件内容是日常工作中最频繁的操作之一cat命令最简单的文件内容查看工具。cat file.txt会一次性显示整个文件内容。对于大文件这可能会导致终端刷屏此时可以使用less或more命令分页查看。less和more命令这两个命令都支持分页查看文件内容。less比more功能更强大支持向前和向后翻页搜索等功能。我个人的习惯是总是使用less。head和tail命令head -n 10 file.txt显示文件前10行而tail -n 10 file.txt显示文件最后10行。tail -f特别有用它可以实时监控日志文件的更新。vim编辑器这是Linux中最强大的文本编辑器。虽然学习曲线较陡但一旦掌握将极大提高效率。基础操作包括i进入插入模式ESC退出插入模式:wq保存退出:q!不保存退出。3. 文件与目录管理进阶3.1 文件操作命令详解cp命令文件复制。cp source.txt dest.txt是最基本用法。我经常使用cp -r来递归复制目录cp -i可以在覆盖前提示确认避免误操作。mv命令文件移动或重命名。mv old.txt new.txt实现重命名mv file.txt /path/to/dir/实现移动。注意这个命令没有回收站概念操作前务必确认。rm命令文件删除。rm file.txt删除文件rm -r dir/递归删除目录。这是一个危险的命令特别是rm -rf /会删除系统所有文件。我建议新手先使用rm -i开启交互模式。mkdir和rmdir创建和删除目录。mkdir -p可以一次性创建多级目录非常实用。rmdir只能删除空目录要删除非空目录需要使用rm -r。3.2 文件权限与属性管理Linux的文件权限系统是其安全模型的核心chmod命令修改文件权限。权限分为读(r)、写(w)、执行(x)分别对应数字4、2、1。例如chmod 755 file.sh设置所有者有rwx权限组和其他用户有rx权限。chown命令改变文件所有者。chown user:group file.txt可以同时修改所有者和所属组。需要root权限才能执行这个命令。chgrp命令专门用于修改文件所属组。chgrp developers file.txt将文件所属组改为developers。注意在生产环境中修改系统文件权限时要特别小心错误的权限设置可能导致安全漏洞或服务无法正常运行。4. 文本处理与搜索技巧4.1 强大的文本处理三剑客grep命令文本搜索利器。grep error log.txt搜索包含error的行。我常用的选项包括-i忽略大小写-v反向匹配-n显示行号-r递归搜索目录。sed命令流编辑器用于文本替换和转换。sed s/old/new/g file.txt将文件中所有old替换为new。sed -i可以直接修改原文件使用时要小心。awk命令强大的文本分析工具。awk {print $1} file.txt打印每行的第一个字段。awk还支持编程可以处理复杂的文本分析任务。4.2 查找文件与内容find命令文件搜索的瑞士军刀。find / -name *.log在全盘搜索.log文件。我常用的选项-type f只找文件-type d只找目录-mtime -7找7天内修改过的文件。locate命令比find更快因为它搜索数据库而不是实时扫描文件系统。使用前需要先运行updatedb更新数据库。which和whereis查找命令的位置。which python显示python命令的完整路径whereis python还会显示相关文档。5. 系统管理与进程控制5.1 系统监控与资源查看top和htop命令实时监控系统资源使用情况。top显示CPU、内存使用率及进程列表htop是其增强版界面更友好支持鼠标操作。free命令查看内存使用情况。free -h以人类可读的格式显示。df和du命令磁盘空间检查。df -h显示文件系统使用情况du -sh *显示当前目录下各文件/目录的大小。ps命令查看进程状态。ps aux显示所有用户的所有进程ps -ef是另一种常用格式。5.2 进程管理与作业控制kill命令终止进程。kill -9 PID强制终止指定PID的进程。先用ps找到进程PID再kill。pkill和killall通过进程名终止进程。pkill nginx终止所有nginx进程。nohup命令使进程在退出终端后继续运行。nohup command 将命令放入后台运行输出重定向到nohup.out。jobs、fg和bg作业控制命令。command 将命令放入后台运行jobs查看后台作业fg %1将作业1调回前台。6. 网络相关命令6.1 网络配置与诊断ifconfig和ip命令网络接口配置。ifconfig显示网络接口信息ip addr是其现代替代品功能更强大。ping命令测试网络连通性。ping example.com持续发送ICMP包测试连接。traceroute命令跟踪数据包路径。traceroute example.com显示数据包到达目标经过的路由。netstat和ss命令网络连接统计。netstat -tulnp显示所有监听端口及对应程序ss是其替代品速度更快。6.2 文件传输与远程连接scp命令安全复制文件。scp file.txt userremote:/path/将本地文件复制到远程服务器。rsync命令更强大的文件同步工具。rsync -avz local/ userremote:remote/同步本地目录到远程只传输变化的部分。ssh命令远程登录。ssh userhost登录远程主机ssh -p 2222 userhost指定非标准端口。wget和curl下载工具。wget http://example.com/file下载文件curl -O http://example.com/file功能类似。7. Shell技巧与高效用法7.1 管道与重定向|管道符将一个命令的输出作为另一个命令的输入。例如ps aux | grep nginx查找nginx进程。和重定向command file将输出重定向到文件覆盖command file追加到文件。输入重定向command file将文件内容作为命令的输入。2错误重定向command 2 error.log将错误信息重定向到文件。7.2 命令组合与快捷键和||命令组合。cmd1 cmd2只有cmd1成功才执行cmd2cmd1 || cmd2只有cmd1失败才执行cmd2。;命令分隔cmd1; cmd2依次执行两个命令无论第一个是否成功。常用快捷键CtrlC终止当前命令CtrlZ暂停当前命令CtrlD发送EOF退出终端或结束输入CtrlR反向搜索命令历史。命令历史history查看命令历史!number执行历史中对应编号的命令!!重复上一条命令。8. 实用脚本与自动化8.1 基础Shell脚本编写Shell脚本是自动化运维的重要工具。一个基本的脚本框架如下#!/bin/bash # 这是一个注释 echo Hello, World!保存为hello.sh后需要赋予执行权限chmod x hello.sh然后可以运行./hello.sh脚本中常用的元素包括变量namevalue使用时加$前缀echo $name参数$0脚本名$1第一个参数$#参数个数条件判断if [ condition ]; then ... fi循环for i in {1..10}; do ... done8.2 实用脚本示例日志分析脚本#!/bin/bash # 分析nginx访问日志统计访问量前10的IP LOG_FILE/var/log/nginx/access.log if [ ! -f $LOG_FILE ]; then echo Error: Log file not found! exit 1 fi echo Top 10 visiting IPs: awk {print $1} $LOG_FILE | sort | uniq -c | sort -nr | head -10备份脚本#!/bin/bash # 简单备份脚本 BACKUP_DIR/backup SOURCE_DIR/var/www DATE$(date %Y%m%d) if [ ! -d $BACKUP_DIR ]; then mkdir -p $BACKUP_DIR fi tar -czf $BACKUP_DIR/backup_$DATE.tar.gz $SOURCE_DIR echo Backup completed: $BACKUP_DIR/backup_$DATE.tar.gz9. 常见问题排查与解决9.1 磁盘空间问题当系统提示No space left on device时可以按照以下步骤排查使用df -h查看各分区使用情况如果某个分区已满使用du -sh *在该分区下查找大文件对于/var/log目录可以使用ls -lhS按大小排序查看日志文件清理旧的日志文件find /var/log -type f -name *.log -mtime 30 -delete9.2 进程无法启动当服务无法启动时检查服务状态systemctl status servicename查看日志journalctl -u servicename -n 50显示最近50行检查端口是否被占用netstat -tulnp | grep :80检查配置文件语法很多服务提供检查命令如nginx -t9.3 网络连接问题排查网络问题的基本流程检查本地网络接口ip addr或ifconfig测试本地网络连通性ping 8.8.8.8Google DNS测试DNS解析ping example.com检查路由ip route或route -n检查防火墙规则iptables -L -n或firewall-cmd --list-all10. 命令安全与最佳实践10.1 危险命令与防范以下命令需要特别小心使用rm -rf /删除根目录下所有文件:(){ :|: };:fork炸弹会快速消耗系统资源mv / /dev/null将根目录移动到黑洞设备chmod -R 777 /给所有文件赋予最大权限防范措施使用alias rmrm -i设置交互式删除重要操作前先执行echo测试确认无误再移除echo使用--preserve-root选项现代rm默认启用定期备份重要数据10.2 运维最佳实践使用sudo而不是直接root登录重要操作前先在小范围测试修改配置文件前先备份使用版本控制系统管理配置文件编写详细的文档和操作手册自动化重复性任务设置适当的日志轮转策略定期检查系统安全更新在Linux命令行的世界里实践是最好的老师。我建议新手从简单的任务开始逐步构建自己的命令库。遇到问题时善用man命令查看手册或者command --help查看简要帮助。记住每个Linux高手都是从输入第一条命令开始的。