ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux学习1:零基础入门路线与环境搭建避坑指南

Linux学习1:零基础入门路线与环境搭建避坑指南 说句实话我最早接触Linux完全是误打误撞。大学里跟着教程装了个虚拟机敲了几个ls、cd然后就被卡在“为什么我的命令没有输出”这种问题上。真正开始系统学是工作之后被一台没有图形界面的服务器逼的你不想学都不行因为生产环境不可能给你开个桌面让你点鼠标。所以这次我把自己的学习过程整理成“Linux学习1”这系列笔记不只是贴命令而是把每一步为什么这样做、踩过什么坑也一起记下来。这一篇适合的人很明确零基础但准备认真学Linux的新手、正在准备linux面试题测试的求职者、工作中被迫切换到Linux服务器做开发的程序员还有单纯好奇“Linux到底怎么玩”的普通用户。我不打算写成一份linux常用命令大全那样你背完还是会忘。我更想给你一条学习路线告诉你先装什么、后练什么、遇到问题去哪查让你能真正用起来。另外有个好消息现在Linux的软件生态比以前好了太多。我最早用Linux时装个输入法都要折腾一晚上现在日常用的聊天工具、白板软件、办公套件基本都有Linux版了甚至很多厂商出了针对Linux的独立客户端这说明桌面Linux真的能当主力机用了。所以别担心学了没处用反而现在是学习Linux的好时机。1. 为什么学Linux以及怎么学1.1 这一系列笔记的定位先把这个系列想讲清楚。市面上的Linux教程大致分两类一类是纯命令手册读起来像字典另一类是调参指南上来就让你改内核参数但根本看不懂为什么。我这两类都深受其害。所以我写“Linux学习1”这个系列核心是三件事第一给你一条循序渐进的学习路径不让你一上来就面对一堆概念第二把每个操作背后的原理讲明白哪怕是用生活化类比第三分享真正会踩到的坑和排查思路这些是文档里不会写的。这篇是第一篇重点在“环境准备 基础命令 日常操作”后面几篇我会陆续写shell脚本、服务部署、网络配置、安全加固这些专题。你可以把它当成一个导航帖学完这一篇至少能在Linux系统里独立完成日常操作而不是一开终端就懵。1.2 别急着装系统先想清楚学Linux要干嘛我见过太多人一上来就下载Kali Linux装完之后不知道怎么用然后一个月后放弃。学习Linux失败的原因通常不是操作系统难而是学习目标太模糊。先问自己一个问题你学Linux是为了什么如果是为了应付工作比如要在服务器上部署应用、排查线上问题那就重点学命令、权限、日志、网络配置。如果是为了做开发比如在Linux下写代码、编译项目、跑Docker那就重点学开发工具链、版本管理、容器编排。如果是为了安全方向想学渗透测试那Kali Linux和linux提权确实很有用但你得先有扎实的基础操作能力不然连工具都跑不起来。如果只是单纯好奇想让桌面Linux替代Windows那重点是输入法、办公软件、日常应用的平替选择。想清楚目标之后再去选发行版和搭建环境。目标不同后面学的侧重点完全不一样。这篇文章我按“通用基础 运维向 开发向”来写安全方向我会提一些入门思路但你先别急着碰。2. 学习环境搭建虚拟机、双系统还是远程服务器2.1 选一个适合自己的Linux发行版选发行版这件事很多人纠结。我直接给你一个结论如果你是第一次接触Linux选Ubuntu Desktop或者它的衍生版别想太多。Ubuntu的社区活跃度最高遇到问题搜索一下基本都有答案这一点对新手的意义比什么都大。我自己第一次用的是CentOS结果图形界面配置折腾得我怀疑人生很多软件源里的包还特别老后来换了Ubuntu才顺畅起来。其实发行版之间的核心区别主要看两个方面包管理器和软件源维护策略。发行版包管理器适合场景特点Ubuntu / Debianapt新手入门、开发、桌面资料最多生态好CentOS / Rocky / Almayum / dnf服务器运维、企业环境稳定偏向生产Fedoradnf追新版本、开发技术新节奏快Deepin / 桌面发行版apt桌面办公替代中文体验好界面精致Kali Linuxapt安全测试自带大量安全工具不适合日常使用这里提一下“linux国产”这个话题。现在国内团队维护的发行版确实在慢慢变好比如Deepin做桌面体验做得不错在很多会议室、教育场景里能看到它的身影。如果你是给单位里的老电脑装Linux用这种带完整中文界面的发行版上手成本会低一些。不过学习路径核心还是那套底层命令发行版只是外壳。再强调一个容易踩的坑别装Kali当主力系统。Kali的设计目标是安全测试默认用户权限很高很多常用软件反而没装你拿来当日常系统用既不稳定也没必要。2.2 虚拟机安装的实操细节附蓝屏排查Linux不一定要真机安装我强烈建议新手先用虚拟机。虚拟机的好处太多了坏了大不了重装、可以随便折腾快照、不用考虑双系统引导的麻烦而且主机系统还能正常用。具体步骤大致如下安装虚拟机软件我用过VirtualBox和VMware说实话VMware的兼容性更好一点但VirtualBox免费看你预算。下载你选定的Linux镜像ISO文件。官网下载就行注意下载完校验一下SHA256防止文件损坏。新建虚拟机内存建议至少分2GB磁盘给20GB以上CPU给2核。如果你的主机内存只有8GB虚拟机内存别超过4GB。引导虚拟机选择ISO文件开始正常安装。安装过程中语言、时区、用户密码按提示设就好。安装完成后建议先做一次系统快照之后随便折腾出问题一键恢复。但是这里有一个非常经典的问题就是热词里那条“虚拟机安装linux蓝屏”。很多人装上之后虚拟机蓝屏或者在VMware里启动Linux直接卡死、蓝屏折腾一晚上都进不去系统。我排查过不少次主要原因就三个Windows的Hyper-V和虚拟机软件冲突。如果你在Windows上启用了Hyper-V、内核隔离、内存完整性这些功能VMware或者VirtualBox的虚拟化层会跟它们打架然后崩溃。解决方法是控制面板——程序——启用或关闭Windows功能把Hyper-V、虚拟机平台这些关掉或者反过来直接用Hyper-V装Linux别再用VMware。BIOS里虚拟化技术没开启。这个很常见尤其是品牌机出厂默认关的。开机进BIOS找到Intel VT-x或者AMD-V给它开启。虚拟机分配的资源不够。尤其是内存如果只给1GB装带图形界面的Linux确实可能卡到像死机。分配2GB以上关闭主机的其他大程序再试。你按这个顺序排查蓝屏问题大概率能解掉。装好系统之后我建议你先把虚拟机软件里的“增强功能”或者“open-vm-tools”装上不然鼠标切不出去、屏幕分辨率也调不对体验会很差。2.3 云服务器和WSL是另外两条好走的路除了虚拟机还有两个替代方案。云服务器是练习Linux运维最好的环境因为它跟生产环境一模一样你操作的就是一台远程服务器。买一台最便宜的按量付费服务器通过SSH连接在上面折腾命令、部署服务、练环境配置效果比本地虚拟机更贴近实际工作。学完之后直接销毁实例再换一台新的继续练成本很低。WSL则是Windows下开发者的最爱。全称是Windows Subsystem for Linux它的体验非常轻量不需要启动完整虚拟机就能跑Linux环境还能直接挂载Windows目录调试代码、跑脚本都很快。唯一的问题就是版本更新很多人的WSL版本比较旧启动时会提示“wsl needs updating your version of windows subsystem for linux (wsl) is too old”之类的话翻译成人话就是你的WSL内核太旧需要升级。解决方法很简单在Windows终端里执行wsl --update然后在管理员权限的PowerShell里执行wsl --set-version 你安装的发行版名称 2把发行版切换到WSL 2模式很多兼容性问题就消失了。3. Linux文件系统与常用命令每天都要背几个3.1 目录结构先理解Linux的“树”很多人学Linux被绕晕的第一个点就是你永远不知道文件放在哪。Windows的逻辑是C盘、D盘每个盘自带根目录里面塞机器。Linux不一样它只有一个根目录也就是/所有设备和路径都挂在这棵树上。我常用一个类比讲给别人Linux整个系统像一栋办公楼根目录是前台你看不到全貌但你只要按门牌找就行。比如/bin和/usr/bin放系统常用的命令程序相当于楼里的公共设施。/etc放系统的所有配置文件相当于物业的台账改系统配置基本都在这。/home是普通用户的家目录相当于员工宿舍每个人的东西放自己的屋里。/var放日志、缓存、临时文件相当于楼里的杂物间出问题查日志主要奔这儿。/tmp是临时文件目录谁都能写但一重启就清空相当于公共白板。/dev是设备文件Linux里连硬盘、键盘都是以文件形式存在的这一点很多人第一次知道时会有点震撼。这个树状结构是固定的不管你是Ubuntu还是CentOS核心目录都是这套。先把这个框记住再去学命令你会发现很多命令的行为其实很好理解。3.2 最常用的那批命令怎么用才不白学linux常用命令大全这类资料网上很多但我的建议是每天精学几个比一次性收藏几百个强得多。学习命令的正确姿势不是背参数而是理解它的名字和用途然后反复用直到成为肌肉记忆。下面是第一批你必须熟练掌握的我按使用频率排个序# 定位当前位置 pwd # 切换目录 cd /home/user cd .. # 上一级 cd ~ # 回家目录 cd - # 回上一次的目录这个很实用 # 列出文件 ls ls -l # 看权限、大小、修改时间 ls -a # 看隐藏文件隐藏文件以 . 开头 # 查看文件内容 cat file.txt # 直接看全部 less file.txt # 分页查看支持上下翻页按q退出 head -20 file.txt # 看前20行 tail -20 file.txt # 看最后20行加 -f 可以实时滚动 # 搜索文件或内容 grep error /var/log/syslog # 按关键词搜日志 find /etc -name *.conf # 按文件名找范围太大时会慢 # 复制、移动、删除 cp file1 file2 mv file1 /tmp/ rm file_old # 删除文件 rm -rf dir_old # 递归删除目录慎重使用这里有一个必须注意的点Linux没有回收站rm命令删了就没了。我刚开始学的时候在之前一台服务器上执行rm -rf /var/结果手一抖多敲了一个空格差点把整个系统根目录删了。后来我给自己定了三条规矩删除之前先ls看路径。重要目录的删除操作先备份压缩不用rm。能用完整路径就不用相对路径减少误操作概率。3.3 命令记不住先看帮助文档再动手命令记不住很正常我用到今天也会忘参数但这不代表学习失败而是你没学会“查”。Linux自带一个庞大的帮助系统任何命令都可以通过man查看手册比如man ls页面里会详细解释它的所有参数和示例。你可能会觉得英文看着累大段的说明压力大没关系还有一个更轻量的工具叫tldr它会显示常用的场景命令比如tldr tar输出就是“解压、压缩”几个常用写法直接抄作业。我后来养成了一个习惯新拿到一个Linux服务器先装个tldr再tldr使用不熟悉的命令效率比一个个翻man高得多。4. 软件安装与环境配置基础中的大头4.1 包管理器别下载源码编译用仓库Linux软件安装跟Windows差异很大核心是“包管理”。不同发行版风格不一样Ubuntu、Debian系用aptCentOS、Rocky这类RHEL系用yum/dnf。它们的逻辑都一样通过软件源仓库把某个软件及其依赖统一拉取并安装省得你手动去解决依赖地狱。比如要在Ubuntu上安装软件sudo apt update # 更新软件源索引 sudo apt install nginx # 安装nginx sudo apt remove nginx # 移除在CentOS上用sudo yum install nginx # 或者新版 CentOS/Rocky sudo dnf install nginx有一个点新手不太理解为什么安装个软件要先update因为软件源的信息是缓存在本地的update就是去找远程仓库要“最新目录”不然你安装的可能还是几个月前的版本甚至找不到新加入的软件。在国内环境中软件源的访问速度偶尔会不太稳定建议设置一个速度较好的国内镜像站来加速。配源时换上对应发行版官方认证的镜像地址也可以用发行版厂商提供的自动脚本选源之后执行update即可。4.2 Docker、Python、MySQL的安装与初始化英文资料、论坛里经常看到一句话Linux能装Docker、Python、MySQL这些是服务端开发的基本功。我实际帮你走一遍常见的安装流程你会看到命令并不多但每一步都有讲究。安装Dockercurl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo systemctl enable docker sudo systemctl start docker docker --version安装完成后记得把你的用户加入docker组否则每次都要sudosudo usermod -aG docker $USER改完组之后需要重新登录一次这个细节很容易被忽略导致你明明执行了usermod却还是没权限。安装PythonUbuntu上需要注意版本sudo apt update sudo apt install python3 python3-pip python3-venv python3 --version我建议你使用venv创建虚拟环境不要把所有依赖都装到系统里。做法是mkdir myproject cd myproject python3 -m venv .venv source .venv/bin/activate pip install flasksource激活后终端提示符会多出一个小括号说明你已经在虚拟环境里面了。这一步看似多此一举但能帮你避免无数个“同一个包两个项目版本冲突”的坑。安装MySQLsudo apt install mysql-server sudo systemctl start mysql sudo mysql_secure_installation启动后还需要初始化密码可以使用sudo mysql进入自带管理权限的客户端然后执行ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 新密码; FLUSH PRIVILEGES;说实话MySQL的权限管理是最容易让新手崩溃的点很多时候服务明明启动了客户端连不上报错信息像天书。我的建议是先把root密码和用户创建流程搞清楚再用Navicat或者命令行客户端连遇到Access denied先看用户名、主机名、密码三项是否完全匹配这三项任何一个不对都会拒绝连接。4.3 中文输入法桌面Linux的门槛之一如果你要把Linux当日常桌面用输入法是个绕不过去的话题。我在用Linux桌面时折腾过的方案挺多目前比较稳的组合是fcitx5输入法框架加上中文输入法引擎。Ubuntu下的安装方式sudo apt install fcitx5 fcitx5-chinese-addons安装完成后在系统设置里把输入法框架设为fcitx然后重新登录再通过配置工具添加拼音输入法。如果你用的发行版默认是ibus也可以安装ibus自带的中文引擎但按我的体验fcitx5对中文输入的支持更稳定候选词和快捷键的体验更接近日常输入习惯。如果安装好的输入法无法激活先重启一下桌面环境很多情况下是环境变量没生效不是输入法没装好。5. 系统管理与进阶话题这是拉开差距的地方5.1 用户与权限新建用户这一步别跳过Linux本身是个多用户系统日常操作别老用root账号这是所有正规服务器的基本要求。所以linux新建用户这个操作你必须会。推荐用adduser而不是useradd因为前者是交互式的会把家目录、密码、用户信息一次性配置好sudo adduser newuser sudo usermod -aG sudo newuser # 把用户加入sudo组 su - newuser之后你这台机器上的新用户就能正常登录并且拥有sudo权限了。权限控制的核心还有一个chmod命令它操作的是文件权限的三组”读r、写w、执行x“位分别对应所有者、同组用户、其他用户。最简单的用法是chmod 755 script.sh # 所有者和组可读可执行其他用户只读 chmod 700 secret # 只有所有者能进入初学阶段有一个常见错觉目录的写权限代表能往里面放文件但实际上你还要有目录的执行权限才能进入目录。这个细节导致很多人改了目录权限后依然进不去别怀疑自己先去检查x权限。还有一个容易被问到的场景“linux密码过期提醒通知”可以用chage命令管理sudo chage -l username # 查看密码策略 sudo chage -M 90 username # 设置密码90天后过期 sudo chage -W 7 username # 过期前7天提醒企业服务器上这种做法很常见用来保证密码定期更换。如果你自己练手也可以试试。5.2 进程与进程间通信理解系统在跑什么用过Linux一段时间后你会慢慢不满足于只会敲命令而是想弄明白“系统里到底在跑什么”。这时就需要理解进程的概念。进程就是一个正在运行的程序实例每一个进程都有一个PID进程号。常用命令ps -ef # 查看所有进程-e表示全部-f表示完整格式 top # 动态刷新进程列表相当于任务管理器 htop # top的增强版安装后体验更好 kill -9 12345 # 强制结束进程 systemctl status nginx # 查看某个服务状态而进程间通信IPC是指多个进程交换数据的方式Linux提供了管道、信号、共享内存、Socket等机制。最简单的一个理解场景是管道符ps -ef | grep nginx这里的竖线就是管道它的含义是把左边命令的输出作为右边命令的输入。grep相当于一个过滤器只输出带关键字“nginx”的行。这个“|”符号是Linux命令行里最强大的符号之一学会它之后你就能把一个复杂的任务拆成多个小命令组合完成。还有一种常见面试题是“如何查看某个端口被什么进程占用”ss -lnp | grep :80这个命令在排查服务启动失败时特别好用如果有进程已经占了80端口你的新服务会起不来报错很莫名其妙你查一下就知道真相了。5.3 使用gdb单步调试理解程序执行过程Linux下编译和调试C/C程序是我认为每个开发者都要会的基础能力。很多入门者在Windows上习惯了IDE里点“下一步”到了Linux就不知道怎么调试了。先写一个最简单的C代码#include stdio.h int main() { int sum 0; for (int i 1; i 10; i) { sum i; } printf(sum%d\n, sum); return 0; }编译的时候加上-g参数保留调试信息gcc -g -o sum sum.c然后用gdb打开gdb ./sum进入gdb后设置断点、单步运行(gdb) break main (gdb) run (gdb) next # 单步运行不进入函数 (gdb) step # 单步运行进入函数 (gdb) print sum (gdb) continue这就能实现“linux单步运行程序”的效果。很多面试题会问调试技巧其实核心就是三个词断点、单步、观察变量。你用gdb跑一遍比背一百道面试题都有用。5.4 嵌入式Linux、工业控制和安全的几条分支很多人在热词里看到“嵌入式linux项目”、“linux cnc plc”、“linux phy 不使用mdio, 使用i2c”这类词汇会觉得Linux好像离自己很远。其实这都是Linux在实际行业里的应用场景。嵌入式Linux非常常见路由器、机顶盒、智能家居控制板、车载系统很多都是跑Linux内核。做嵌入式开发时你的学习重心要从“桌面命令”转向“交叉编译、设备树、驱动模块、uboot”这些底层概念。比如在调试网络物理层芯片时有些板卡不使用MDIO接口访问PHY而是通过I2C接口这种就是很典型的硬件驱动调试场景需要对Linux的设备驱动模型有一定的理解这属于另一个深水区。工业控制领域里有些设备通过Linux和实时扩展来跑CNC或者PLC逻辑本质上是把Linux用于高可靠性的工控场景。它的核心不在发命令而在实时性、稳定性和现场总线协议的适配。如果你感兴趣的是安全方向比如“kali linux”和“linux提权”我给你的建议是先花一个月把基础命令和系统管理练熟然后在一台专门的测试虚拟机里学习。提权本质上研究的是“以低权限用户身份进入系统后如何利用配置错误或内核漏洞获取root权限”。这属于安全测试的核心课题但要注意必须在你自己的测试环境或者获得授权的环境中练习不要对真实系统动手这是底线。安全测试这个方向很有前景但它考验的是综合能力不是你装个Kali就万事大吉的。6. 常见问题排查与避坑实录6.1 虚拟机蓝屏的详细排查流程前面提到了“虚拟机安装linux蓝屏”的原因我再把它整理成一张排查表你按顺序检查即可现象大概率原因解决方法虚拟机启动后主机蓝屏Hyper-V和VMware冲突关闭Windows的Hyper-V和内核隔离功能虚拟机界面卡死、黑屏内存不足或虚拟化未开启BIOS开启VT-x/AMD-V分配内存大于2GB安装完成重启后又回到安装界面启动顺序没调整或引导未装好重新挂载ISO选择启动盘为硬盘鼠标传不进去、分辨率很小没装增强工具安装open-vm-tools或VirtualBox增强功能在这里多说一句很多新手蓝屏之后就以为Linux不能装其实是被Windows安全机制坑了。先把Hyper-V关掉再试这个成功率最高。6.2 WSL提示版本过旧热词里有“wsl needs updating”的提示这在Windows上使用WSL的人很常见。出现这个提示时首先看下面的完整英文它会告诉你当前WSL版本是1还是2。如果提示“too old”执行wsl --update wsl --set-default-version 2如果再固执一点直接重启Windows然后重新启动WSL基本都能解决。在WSL 1和WSL 2之间切换时数据是保留的不会丢这点可以放心。6.3 密码过期和忘记密码怎么办密码过期后SSH登录会直接拒绝提示密码过期。解决办法是登录后马上重新设置新密码passwd如果是忘记密码而且没法用sudo提权那就只能在开机时进入恢复模式grub引导界面选高级选项选单用户模式然后用passwd重置。这个操作我只建议在虚拟机里练生产环境需要非常谨慎整个过程会改变系统引导行为有风险。6.4 准备Linux面试题和后续学习方向现在不少后端、运维、测试岗位都会考Linux常用命令和linux基础面试题。根据我自己的面试和被面试经验高频考点集中在ls、cd、rm、cp、mv等日常命令的变种参数。grep、sed、awk的简单用法尤其是管道组合。文件权限与用户管理。进程管理、内存查看、磁盘管理ps、top、free、df。日志分析和服务管理tail、systemctl。shell脚本基础for循环、条件判断、变量引用。这里有个容易被忽视的点面试官通常不是让你背命令而是给你一个场景让你现场写命令。比如“如何查找某个日志文件里所有报错的行并统计数量”你可以这样拆解grep ERROR /var/app/app.log | wc -lgrep负责过滤管道再加上wc -l统计行数。这种组合一旦你练熟了面试题就挡不住你。另外一个真实的例子是我在Linux下帮别人编译一个用Wails写的桌面客户端Wails是一个基于Go的桌面GUI框架v2.12版本在Linux下编译时经常遇到缺依赖的问题。当时报错是因为缺了gtk相关的开发库解决方式是安装依赖库再重新编译sudo apt install libgtk-3-dev make build这说明Linux下编译项目时缺系统依赖是常态报错信息里一般都会直接告诉你缺什么看到“fatal error”之类别慌它已经把关键线索给你了。最后再分享一点我的个人体会学Linux这件事我踩过最深的坑就是把命令背下来然后不用结果一周后全忘。后来我的做法很简单给自己定一个真实任务比如搭一个个人博客、部署一个静态网站、写一个自动备份脚本当你有明确目标时所有命令都变成了完成任务的手段记忆牢固度完全不一样。另外我想说的是别怕把系统折腾坏。虚拟机和WSL的最大价值就是能随便作坏了就恢复快照多作几次你对系统日志、启动流程、配置文件的敏感度就出来了。我很多Linux知识都是在一次次“手贱”之后被迫补上的比如误删了系统目录之后去查怎么恢复才真正搞清楚挂载和fstab的原理。最后分享一个小技巧准备一个自己的命令备忘清单文件每次学到新的命令或者踩坑时记录一条两三条分门别类放好。很多年后回头看这份记录的价值比任何教程都大因为它记录的是你自己的成长路径。下一篇“Linux学习2”我会重点写shell脚本和自动化把你从“能操作系统”推向“能管理系统”到时候我们继续。
返回列表