每次有人让我推荐Linux入门资料我一般会先拦住他问一句你装上Linux之后到底打算用它干什么很多人装完Linux的第一件事是折腾桌面主题、换终端皮肤、找各种好看的插件然后就没有然后了。这个思路不能说错但确实不是玩转Linux操作系统的正确路径。这篇内容可以理解为Linux通关手册的其中一讲对应标题里的第34-35讲两讲合并成完整的一篇。与其给你铺一堆命令让你背不如拆开讲讲Linux到底是什么、怎么学最快、踩过哪些坑、面试会被问什么。无论你是刚接触操作系统的大学生、准备转行运维的职场人还是单纯想在虚拟机里装个Ubuntu体验一下这篇内容应该都能给你一张清晰的地图。我最早接触Linux是在大学的操作系统实验课上当时对着黑乎乎的终端一脸懵后来真正把我带进门的是两件事一是把CentOS装到一台旧笔记本上硬着头皮用了一个月二是第一次写好一份能自动备份日志的Shell脚本。从那以后我对这个系统的看法就从难搞变成了真香。1. 正确理解Linux你学的从来不是一个系统1.1 Linux不是Windows那样的单一个体而是一整套生态很多人会把Linux理解成一个操作系统就像Windows那样。这个理解不能算全错但不准确。Linus Torvalds当年写下的其实只是Linux内核Kernel——它负责管理CPU、内存、磁盘、网络这些硬件资源但你没法直接使用一个内核因为你还缺一套跟它配合的软件工具、Shell环境和应用程序。所以我们日常说的Ubuntu、CentOS、Debian、Kali Linux严格来说都是Linux发行版。你可以把内核想象成发动机发行版是整车——同一个发动机配上不同的变速箱、外壳、内饰开起来的感受就完全不一样。这也是为什么网上总有人争论哪个Linux发行版最好其实没有标准答案只有适不适合你的场景。理解这一层还有另外一个好处你会发现Linux的知识是迁移的。在Ubuntu上学的命令换到CentOS上照样能用在Deepin上学会的目录结构换到麒麟系统上也差不多。真正需要重新适应的只是包管理器、软件源和服务管理方式这些外围工具而内核层面的哲学是一样的。1.2 玩转Linux的三级跳命令、系统、服务如果把玩转Linux拆解成具体能力我倾向于分成三个递进阶段。第一阶段是命令基本功就是能像用筷子一样自然地使用CD、LS、CP、MV这些基础命令熟练操作文件和目录遇到问题知道去哪找帮助。第二阶段是系统管理要懂得权限模型、用户体系、进程管理、日志、系统服务的启停——这个阶段你已经能独立在一台Linux服务器上部署环境了。第三阶段是服务与自动化会用Shell脚本把重复工作自动化会装Web服务器、数据库、容器这些应用知道怎么排查故障。这三个阶段对应着完全不同的学习方法和产出。第一阶段的产出是敢用第二阶段的产出是能扛事第三阶段的产出是能提效。很多初学者卡在第一步的原因不是笨而是试图跳过第二阶段直接学第三阶段结果连PATH是什么都没搞清楚就去配Nginx报错了也不知道怎么查。2. 环境准备与发行版选型从零开始搭一个练手环境2.1 为什么我劝你先把Windows留着虚拟机是练手的最佳路径不管你是想体验还是认真学习第一件事不是把电脑分区重装而是先在虚拟机里跑一台Linux。市面上最常用的两个虚拟机软件是VMware Workstation和VirtualBox。前者功能更全性能更好个人使用免费版即可后者是完全开源免费的功能也完全够用。有人会问为什么不直接装双系统我的回答是双系统意味着每次切换都要重启而虚拟机里你可以在两个系统之间无缝切换还能随时打快照——快照这个功能在练手阶段就是后悔药你可以在做危险操作之前拍一个快照出问题了一秒恢复。我见过太多新手在物理机上装完Linux引导出问题结果整个电脑都进不去Windows心态直接爆炸。还有一个常见现象在热搜词里也能看到虚拟机安装Linux蓝屏。这里我要说一个排查重点如果是在VMware里装Linux时蓝屏多半跟虚拟机版本和宿主机内核的兼容性有关。解决办法通常是更新VMware到最新版或者在虚拟机设置里把固件类型改成UEFI试试。2.2 发行版怎么选从Ubuntu、CentOS到国产系统选发行版这件事被问得最多。我的建议非常简单如果你是新手直接选Ubuntu。理由不是因为它最强而是因为它的社区资料最丰富。你在现在这个终端输入几乎任何一句报错信息八成都能搜到别人遇到过同样的问题Ubuntu的文档和问答覆盖度是其他任何发行版都比不了的。国内很多教程也是以Ubuntu为基础的跟着学起来最顺。如果是想往服务器运维方向发展我会建议第二门课学CentOS Stream或者Rocky Linux因为它们属于RHEL系在企业服务器中的使用率非常高。你会发现RHEL系用的包管理器是dnf服务管理用systemd而Ubuntu用的是apt——习惯两套体系之后你在任何一家公司的服务器上都不会露怯。另外近几年国产操作系统的发展也很值得关注热搜词里就有人搜麒麟操作系统、统信UOS、Deepin。我自己在虚拟机里装过Deepin和麒麟说实话日常办公的体验已经很好了桌面环境、软件商店、中文输入法都是开箱即用底层还是Linux、常用的命令完全兼容。如果你想支持国产生态或者单位有国产化替代的需求装一个体验一下是很有价值的。2.3 装Desktop版还是Server版这是一个路线选择问题另一个高频问题是Ubuntu到底是装Desktop还是Server这取决于你的目标。如果你只是想体验Linux、练命令我建议从Desktop版开始它有图形界面做兜底迷路了还有地方点击心理负担小。但如果你是想认真学服务器运维那就装Server版——没有桌面环境意味着你只能靠SSH和命令行来操作这种被逼着用命令行的过程其实是成长最快的。我个人当年是从Desktop版入门的但后来真正提高最快的阶段是在云服务器上天天用终端操作的时候。桌面界面是一个拐杖用久了会依赖它而Server版把你扔进深水区反而逼着你学会游泳。这个取舍你根据自己的目标来定。另外一个很多人忽略的点是镜像下载。去哪下建议去各发行版官网下载不要去第三方网站随便找。装完系统之后第一件事应该是执行系统更新并顺手把软件源换成国内镜像源否则装软件的速度会慢到让人怀疑人生。3. 命令行基本功玩转Linux的分水岭就藏在这里3.1 命令这么多为什么我劝你别死记硬背打开搜索引擎你会发现铺天盖地的linux常用命令大全文章动不动罗列上百条命令看完就忘。从我这些年的经验来看死记硬背是最低效的方式。命令的正确学法是分类理解先明白Linux系统里有哪些维度的操作每个维度记住几个核心命令剩下的用到再查。我按使用频率把命令分成五类文件操作、系统信息、权限管理、网络排查、进程管理。文件操作的最基础组合拳是cd切换目录、ls查看目录内容、cp复制、mv移动、rm删除再加一个find或grep用来找文件。系统信息主要是uname看内核版本、df看磁盘空间、free看内存、top或htop看负载。权限管理无非是chmod改权限、chown改属主、su或sudo切换身份。网络排查是ip查看地址、ping测试连通、ss查看端口监听。进程管理最常用的是ps看进程列表、kill终止进程、journalctl查日志。每类先记住这几个然后从实际工作中去扩展。背一百个命令一周不用就忘掉但理解五个分类框架你一天能查回三十个命令。3.2 三个必须吃透的底层机制管道、权限和sudo命令只是表面的招式,真正决定会不会玩的是三个底层机制。第一个是管道与重定向。管道符|能把前一个命令的输出交给后一个命令处理这是命令行哲学的精华所在。举个例子ls -l | grep txt就是先列出当前目录的详细信息再从中过滤出包含txt的行一条命令解决一个组合需求。重定向则是把输出写到文件去比如echo hello test.txt会把hello写入文件则是追加而不是覆盖。第二个是权限模型。Linux的每个文件都有读、写、执行三组权限分别对应属主、属组、其他人的rwx表示。为什么这个重要因为很多运维事故就出在权限上比如你启动Nginx报权限不足不用问八成是配置文件的读取权限有问题你执行一个脚本提示Permission denied多半是它没有执行权限而不是它坏了。chmod 755和chmod 644这两种组合是最常用的分别对应文件拥有者可读写执行、其他人可读可执行和可读写、其他人只读。第三个是sudo机制。为什么推荐用普通用户干日常活需要管理员权限时才用sudo因为root用户的破坏力太大rm -rf这条命令只要是root身份执行就是连确认都不会问你的。用sudo至少会要求你输密码这个缓冲期有时候真能救命。3.3 命令组合实战一条命令解决一个实际问题光讲理论没用我拿两个真实场景来演示命令组合的魅力。场景一服务器磁盘满了想找出哪个目录占用最大。单看磁盘用量你用df -h够用但要想进一步定位大文件一条经典管道组合是du -ah /data | sort -rh | head -20。这条命令先统计/data目录下所有文件的占用空间再按大小倒序排序最后只显示前20行——磁盘里最大的文件是谁一目了然。场景二从日志里统计某个请求在这天出现了多少次。一条常见的组合是grep 关键词 access.log | wc -l。先过滤出包含关键词的所有日志行再把行数统计出来。别小看这条命令很多初级运维面试题就是从日志里提取信息而答好它的关键就是理解管道。再补一个批量改名的例子。你想把当前目录下所有.txt文件改成.bak后缀一条命令是for i in *.txt; do mv $i ${i%.txt}.bak; done。这里用到了循环和变量替换是Shell脚本的基本功。命令单独看都不难关键是养成一个需求可以被组合命令解决的意识这往往是从会背命令到玩转Linux的分水岭。4. 软件安装与系统管理让Linux真正为你干活4.1 包管理器apt和dnf背后的设计逻辑Linux装软件的方式和Windows有本质区别。Windows是你去官网下载安装包双击下一步Linux则是通过包管理器从软件源仓库下载并安装而且会把该软件依赖的其他软件包一并装好这叫自动解决依赖。Ubuntu用的包管理器是apt对应命令是apt-get update更新源列表、apt-get install安装软件、apt-get remove卸载软件。CentOS/RHEL系用的是dnf老版本是yum用法几乎一致,只是源配置文件的路径不同。说到软件源国内用户一定会遇到装软件慢的问题。默认源在国外下载速度慢到你怀疑人生解决办法是换国内镜像源。操作思路很简单把/etc/apt/sources.list里的地址换成国内镜像站提供的地址然后执行apt-get update。注意换源后必须更新索引否则软件源不生效。换源这个动作在实际工作中经常做不止是Linux后面你接触npm、pip、docker这些工具时也会遇到同样的套路——说到底就是改下载源地址这一个思路。4.2 实战一次性搞定MySQL、Python和Docker的安装我拿Ubuntu系统来演示三个最常见的安装场景命令顺序都是我自己实测过的。先装MySQLsudo apt update sudo apt install mysql-server -y。装完以后运行sudo systemctl status mysql检查服务状态看到activerunning说明服务正常起来了。接着运行sudo mysql进入命令行用ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的密码;给root设置密码。这里需要注意新版MySQL默认root可以用auth_socket插件免密登录但如果你在别的机器上想远程连这个数据库就必须改成mysql_native_password否则会连不上。装Python就更简单了。Ubuntu通常是自带Python3的你只需要确认版本python3 --version。如果要用到pip来装第三方库执行sudo apt install python3-pip。另外要提一个坑系统自带的Python是给系统程序用的建议不要手动去改它否则可能出现系统组件异常。如果你要装特定版本的Python建议用pyenv这个版本管理工具它能帮你在一个系统里管理多个Python版本互不干扰。装Docker也是高频需求。现在的Ubuntu版本装Docker最稳的方法是使用官方脚本curl -fsSL https://get.docker.com | bash脚本会自动完成仓库配置和安装。装完执行sudo systemctl enable --now docker把Docker设为开机自启并立即启动。然后运行sudo docker run hello-world测试如果看到Hello from Docker!的提示恭喜你容器之路就算通了。4.3 系统时区、密码策略与日志文件容易被忽视的细节系统管理中有一类问题是不出问题则已一出就要命的细节。比如时区。服务器默认时区可能是UTC你查看日志时看到的时间和本地时间差了8小时排查问题的时候会非常困惑。解决办法就一条命令sudo timedatectl set-timezone Asia/Shanghai设置完成后再用date命令确认时间正确。再比如热搜词里那个linux密码过期提醒通知。Linux确实有密码过期策略默认情况下很多系统不启用但企业环境为了安全会强制用户定期改密码。管理员可以用chage -l 用户名查看用户的密码过期信息用sudo chage -M 90 用户名设置密码最长使用90天到期前系统会在登录时自动提示用户修改密码。如果你不想让某个服务账号密码过期导致服务崩掉可以执行sudo chage -E -1 用户名取消过期时间并把-M改成-1。这是运维里很经典的坑某个定时任务跑得好好的突然某天报权限错误结果查半天发现是因为服务账号密码过期了。日志方面重点记住几个位置/var/log/syslog或/var/log/messages是系统总日志/var/log/auth.log记录登录认证信息。排查问题时第一件事永远是看日志报错信息看不懂没关系把日志贴到搜索引擎里八成有前人趟过同样的坑。5. 常见故障与排查技巧从报错到定位的完整思路5.1 虚拟机装Linux蓝屏、引导失败问题出在哪里先聊个最让人头皮发麻的场景物理机或虚拟机装Linux之后开机蓝屏。如果是虚拟机我遇到过的案例里第一嫌疑是固件设置。以VMware为例新建虚拟机时默认固件类型可能是BIOS但很多最新的Linux发行版默认要求UEFI引导或者反过来不匹配就会出问题。操作方式是虚拟机设置 - 选项 - 高级 - 固件类型在BIOS和UEFI之间切换再重新安装系统试试。第二嫌疑是安全启动Secure Boot。这两年新装的电脑默认开启Secure Boot而部分Linux发行版尤其是非主流发行版没有正确签名就会被拦住无法引导。解决思路是在BIOS设置里暂时关闭Secure Boot装完系统后再开回来大部分时候问题就迎刃而解了。如果是物理机装双系统时引导失败那十有八九是GRUB引导程序被覆盖或者分区表出问题。这个情况处理起来有点绕但有一个原则别慌先用启动U盘进到Live环境临时系统再修复引导。具体做法是用Boot Repair这类工具一键修复或者用chroot方式重新安装GRUB。这个知识点在运维面试里也会被问到值得记一下。5.2 服务起不来、端口被占用第一步永远是查日志遇到服务起不来很多新手的反应是反复重启、报错截图发给别人看。我的建议永远是一句话先看日志。用systemd管理的服务可以用systemctl status 服务名查看当前状态和最近日志再用journalctl -u 服务名查看完整日志。比如你刚装完MySQL发现启动失败执行journalctl -u mysql就能看到具体是哪一步报错——缺目录、权限不对、配置语法错误日志里都会写。端口占用也是一个高频问题。比如你启动一个Web应用提示端口被占用排查思路很清晰先用ss -tlnp查看哪个进程在监听这个端口拿到进程ID后要么kill掉要么看看这个进程为什么占着端口不释放。记住一个原则端口是不可共享的资源一个端口只能被一个进程监听。5.3 忘记root密码怎么办密码过期不给登录怎么办操作系统的应急处理里重置密码是必考技能。如果你忘了root密码办法是在启动时进入GRUB菜单选到对应内核那一行按e进入编辑模式在linux开头的那一行末尾加上init/bin/bash或rd.break不同系统有差异然后按CtrlX启动系统会直接进入一个单人维护模式。在这个模式下文件系统通常是只读的你需要先重新挂载为可写mount -o remount,rw /然后用passwd命令修改root密码完成后reboot重启。注意这个操作对物理服务器有风险但思路就是进入单用户模式 - 重挂载为可写 - 改密码三步。至于密码过期导致无法登录那是密码策略在起作用。管理员可以用chage -M -1 用户名把过期时间设为永不或者用户在过期前按提示修改密码。这里要特别提醒如果你的服务器上运行着定时任务或者同步服务它的服务账号密码快过期了一定要提前用chage -l查看并调整不然半夜出问题你是睡不好觉的。6. 面试考点与进阶方向从会用到玩转的最后一公里6.1 Linux面试高频考点除了背命令还要会讲思路想验证自己对Linux的掌握程度最直接的方法是看面试题。从linux面试题这个热搜词的搜索量来看这确实是很多人的痛点。我梳理了一下面试里出现频率最高的几类题目。第一类还是命令题但不再问单个命令而是问组合场景比如怎么找出当前目录下大于100MB的文件并删除——答案是find . -type f -size 100M -exec rm {} ;重点考察的是find的-size和-exec参数。第二类是原理题比如硬链接和软链接的区别进程和线程的区别Linux系统开机流程是什么——这类题考的是操作系统基础知识不多花时间读《计算机操作系统》教材是不行的。第三类是故障排查题给你一个场景问怎么处理比如服务器突然负载飙升你会怎么排查标准思路是先top看负载进程再结合free看内存、iostat看磁盘IO、最后看dmesg有没有内核报错一步步缩小范围。以我的经验面试官更看重的是你的排查思路是否清晰而不只是答案背得熟不熟。回答问题的时候按照观察现象 - 收集信息 - 形成假设 - 验证假设的流程来讲比直接甩出一个命令效果好得多。6.2 从入门到进阶Shell脚本、自动化与嵌入式方向玩转Linux的下一个台阶一定是Shell脚本。命令学得再好如果你不会把命令组织成脚本工作效率还是上不去。我建议的练习路径是先从最简单的备份脚本写起把每天要做的重复操作自动化接着学条件判断、循环和函数然后尝试写一个带参数输入的脚本来管理服务比如start、stop、restart三选一。到这一步你已经可以用Linux来自动化解决实际工作里的重复劳动了。再往下走有两个主流方向。一个是服务器运维与云原生方向学习Docker、Kubernetes、自动化运维工具这个方向目前就业需求量非常大相关的面试题也从简单的Linux命令逐渐升级到容器编排和CI/CD。另一个是嵌入式Linux方向如果你对硬件感兴趣可以接触设备树、驱动程序开发热搜词里有linux phy 不使用mdio,使用i2c这种偏硬件驱动的词这就是嵌入式领域比较深的细节了——Linux不止跑在服务器上它还跑在路由器、汽车车机、工控设备里这个领域的知识体系是另一套玩法。无论选哪个方向Linux系统本身的知识永远是底座。操作系统课程里讲的内存管理、进程调度、文件系统、锁与并发这些概念在Windows下你可能感知不到但在Linux下你会慢慢地看见它们的运作——这也是为什么很多学校的操作系统实验课都基于Linux来做。学好Linux你的计算机基础才算是真正扎下了根。最后再说几句实在话我周围经常有人问Linux到底要不要学我的回答始终是如果你跟计算机打交道迟早要学早学比晚学好。学Linux的最大障碍不是技术难度而是初期的挫败感——因为它在思维方式上和Windows完全不同你得花一段时间去适应万物皆文件一切皆可脚本化的哲学。如果让我给新手一个最诚恳的建议那就是先装一台虚拟机然后强制自己一个月不碰图形界面所有操作都走终端。你会痛苦一段时间但一个月之后你会发现很多操作自然就熟了。再配合写点小脚本去自动化一些重复工作用alias去缩短常用长命令你会慢慢体会到命令行下效率翻倍是什么感觉。我在踩了无数次坑之后最大的体会是Linux的学习曲线其实不算陡只是知识面比较杂。只要你的知识框架是清楚的——命令、系统、服务、自动化、故障排查——每一块按主题去查漏补缺剩下的交给时间积累就好。希望你也能在几个月之后回头发现自己已经能很自然地用一个终端搞定大多数事情了。
阅读完成 · 觉得有帮助?