ARTICLE DETAIL

资讯详情

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

Linux Ubuntu入门避坑指南:从装机到环境配置的实战问题全解

Linux Ubuntu入门避坑指南:从装机到环境配置的实战问题全解 陆陆续续整理完第一期Linux之Ubuntu入门篇的学习反馈我发现新手踩坑的路线惊人地一致还在装系统阶段就卡住装完系统中文输入法不知道怎么调出来改个环境变量把命令全都弄丢apt update又不停报404最后忘了密码只能重装系统。这篇文章把这些问题按“装机→环境配置→网络→软件→恢复→硬件→学习路线”的顺序重新排了一遍每一节都是真实翻车记录加修复过程。它适合两类人一类是刚装好Ubuntu正准备配环境的新手另一类是已经在虚拟机里折腾、遇到蓝屏或SSH连不上的学习者。下面直接进入正题。1. 系统安装与引导排雷1.1 虚拟机安装Ubuntu选型与参数新手学Linux我一般建议先放虚拟机里玩不要一上来就双系统。虚拟机的好处是快照一存想怎么折腾都行坏了直接恢复快照不会殃及宿主机。VMware Workstation和VirtualBox都可以性能上VMware更顺滑显卡模拟也好一点但商用有授权问题VirtualBox完全免费开源装好扩展包后日常学习完全够用。我更推荐手头有条件的用VMware没条件或者不想折腾的直接VirtualBox两者都支持导入同一个Ubuntu ISO镜像。具体参数上Ubuntu 24.04 LTS桌面版建议至少给2个CPU核心、4GB内存、40GB虚拟磁盘如果以后想跑Docker、编译C程序、或者开多个虚拟机联调直接给8GB内存和80GB磁盘更省心。磁盘类型选NVMe或SCSI都行控制器默认即可不用特意调整。装系统时建议选择“稍后安装操作系统”而不是“简易安装”这样能完整走一遍手动安装流程后续理解分区和用户设置会更清楚。启动进入安装界面后如果画面花屏或扭曲多半是显卡驱动兼容问题在GRUB启动项里加上nomodeset参数就能进图形安装程序这个参数后面还会反复用到。安装过程中有一个选项是“安装Ubuntu时下载更新”和“安装第三方软件”新手建议全都不要勾先把系统装完进系统后再用软件更新器去补。因为安装阶段网速慢或者国内网络不稳定卡在那里会让人误以为系统安装失败实际上核心系统早就拷完了只是更新流程耗时太久。1.2 真机双系统U盘启动盘与分区建议如果你已经决定装真机双系统那首先要过的是启动盘这一关。制作启动盘推荐Rufus或者balenaEtcherRufus在Windows下写入Ubuntu ISO时弹窗问“镜像写入模式”时选择“DD镜像模式”不要用默认的“ISO镜像模式”。很多人做完U盘后启动直接报错或者进不了安装界面多数就是卡在这里。DD模式按扇区原样写入兼容性最好ISO模式虽然也能启动大部分主流发行版但在个别UEFI固件上会翻车。进BIOS后需要关闭Secure Boot。原因是Ubuntu默认使用的第三方驱动和内核模块没有微软签名Secure Boot会直接拦掉虽然Ubuntu官方签名内核可以过Secure Boot但为了让后续装NVIDIA驱动、VMware Tools之类的东西少些麻烦直接关掉最省心。如果电脑支持UEFI安装方式选“Install Ubuntu alongside Windows”就行安装器会自动收缩Windows分区腾出空间新手不建议手动改分区表风险很高。手动分区的话只要保证有一个EFI分区如果你Windows已经用了EFI就让Ubuntu的引导器也装进那个分区、一个挂载根目录的分区建议至少100GBswap可以交给系统自动创建交换文件不需要再单独划swap分区。这里有个必须强调的操作装完双系统后在Windows里关闭“快速启动”。快速启动会让Windows关机时把系统核心状态写进休眠文件下次直接恢复但NTFS文件系统会处于锁定状态Ubuntu访问Windows分区时经常提示“磁盘不干净”或无法挂载甚至导致数据写入失败。双系统的时间同步问题我在后面第6章单独讲这里先记住一个原则装系统之前先把Windows的快速启动关掉不然两边互相读写盘会很折磨。1.3 虚拟机蓝屏与WSL2备选虚拟机装Ubuntu时宿主机蓝屏这个问题在Win10/Win11的VMware用户里非常常见。根源基本是Hyper-V、基于虚拟化的安全VBS、内核隔离这些Windows虚拟化功能和VMware冲突。简单判断方法系统信息里看“基于虚拟化的安全性”是否显示“正在运行”或者打开任务管理器“性能”页签看虚拟化是否已启用。解决办法有三个方向关掉Windows功能里的Hyper-V和虚拟机平台在Windows安全中心里关闭“内存完整性”用管理员运行bcdedit /set hypervisorlaunchtype off后重启。如果不想关Hyper-V那就不用VMware了直接用Hyper-V虚拟化跑Ubuntu也行但Hyper-V对桌面体验的图形增强做得一般。更省事的路径是把WSL2当作你的“Ubuntu”在微软商店直接装一个。WSL2本质是轻量虚拟机内核是真的Linux日常练命令、写shell脚本、跑Docker都没问题和云服务器的使用习惯也接近。区别在于它没有完整桌面环境图形程序要靠WSLg或第三方X Server这个和完整桌面版Ubuntu的使用体验仍然有差距。我的建议是想学服务器方向和命令行操作WSL2足够想熟悉桌面环境、装中文输入法、折腾日常软件还是老老实实装完整虚拟机。2. 环境变量与开发环境配置2.1 环境变量改崩后的自救配置环境变量把系统改崩是入门阶段翻车率最高的事件之一。很多教程会让你往/etc/profile或~/.bashrc里写export PATH...新手经常漏掉后面的$PATH或者把配置文件里的语法搞错结果就是重启后所有命令都找不到了ls提示未找到sudo提示未找到连vim都用不了。这时候先别慌终端里还能用的命令往往只有export和cd这些shell内建命令先用export PATH/usr/bin:/bin把基础路径临时恢复然后再去修复配置文件。搞清楚三个配置文件的区别能省很多事/etc/environment是系统级环境变量文件优先级最低但影响所有进程不能用export关键字直接写PATH...这种键值对格式就行很多人在这里写export PATH...结果语法不生效/etc/profile是登录shell才加载的对所有用户生效适合写欢迎信息和全局PATH追加~/.bashrc是当前用户的交互式shell每次打开终端都会执行的别名、函数和个性化PATH都放这里。新手最稳妥的改法是只在~/.bashrc末尾追加内容其他两个文件不轻易动改完用source ~/.bashrc或重新登录验证不要直接重启因为一旦写错你还有时间现场修复。修复配置文件时有个实用技巧如果vim打不开用/usr/bin/nano或者/bin/nano打开很多系统默认带了nano如果手边没有完整路径的命令用/bin/ls、/usr/bin/cat这类绝对路径去查看。改回错误行后再source一遍然后用echo $PATH确认路径恢复了。经验是每次改环境变量前先把原文件备份一份cp /etc/profile /etc/profile.bak养成这个习惯之后基本不会出大事。2.2 GCC安装失败的三种典型局面sudo apt install gcc有时候会非常顺利有时候却报着一堆Unable to locate package或者404错误新手容易懵。其实原因就三类。第一类是没有先更新软件索引刚装好的系统apt缓存是空的直接apt install当然找不到包先执行sudo apt update就好第二类是软件源配置有问题包括源文件里的系统版本代号写错、镜像站路径拼错、旧源失效等这个在第3.1节详细讲第三类是只想装gcc但很多入门教程后面会用到make、g、调试工具发现还得单独装不如直接装build-essential一个包把编译工具链全部带齐。如果提示需要添加PPA源比如某些教程让你加“PPA ubuntu-toolchain-r/test”来装新版GCC先确认系统有没有software-properties-common很多精简版系统没装这个扩展包add-apt-repository命令根本不存在。还要提醒一句不要从网上下载源码自己./configure make make install来装GCC除非你想研究编译过程。源码安装GCC依赖链条很长编译要几十分钟出错了也不好卸载初学者用apt装就可以了。装完之后用gcc --version验证常见路径是/usr/bin/gcc说明已经进入系统PATH。2.3 Python、Pip与Miniconda的搭配Ubuntu系统自带Python3但很多新手会发现python命令找不到只有python3能找到。这是Ubuntu的历史习惯它刻意把python这个软链接留出来避免和Python 2时代的脚本冲突。解决办法是执行sudo apt install python3-pip安装包管理工具其它脚本如果需要python命令再自己建立软链接。这里有个坑不要用apt直接装一堆Python全局包系统Python被污染以后会和系统级工具比如update-manager产生依赖冲突轻则报错重则系统组件罢工。我建议对新手直接上Miniconda。Miniconda体积小装完以后用conda create -n py311 python3.11建独立环境想装给什么包就装什么包坏了删掉重建就行完全不影响系统。安装方式很简单官网下载对应架构的.sh脚本x86_64对应Miniconda3-latest-Linux-x86_64.sh执行bash Miniconda*.sh一路回车最后初始化选项选yes。装完后记得重新打开终端conda的base环境才会激活如果conda命令找不到检查~/.bashrc里有没有conda的初始化代码块或者手动source ~/miniconda3/etc/profile.d/conda.sh。不想装conda的话也可以用Python自带的venv模块python3 -m venv myenv创建虚拟环境source myenv/bin/activate进入。venv更轻量、更贴近原生Python开发习惯适合写脚本和普通Web项目conda更擅长科学计算、数据分析和OpenCV这类带预编译二进制库的包管理。两者没有优劣关键是别把包装到系统级Python里。2.4 Docker安装与避免权限坑Docker在入门学习里出现频率很高很多教程会让你apt install docker.io但如果你用的是Ubuntu 24.04会发现自己根本装不上提示没有这个候选包。原因是Ubuntu仓库在24.04版本里移除了docker.io包现在官方推荐从Docker官方源安装docker-ce。安装步骤是先卸载旧版本sudo apt remove docker docker-engine docker.io然后安装依赖apt install ca-certificates curl按官方文档添加Docker的GPG key和apt源最后apt update apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin。装完之后有个新手必踩的坑直接运行docker ps会报permission denied因为当前用户不在docker组里。执行sudo usermod -aG docker $USER注销再登录docker命令就不用每次加sudo了。如果不加组每次都得sudo docker ...不仅麻烦而且容器里挂载目录时容易出现权限混乱。Docker国内加速的问题我不多展开简单说一句如果你docker pull速度极慢或者超时去你使用的镜像站看看是否有Docker镜像加速器服务按说明配置好/etc/docker/daemon.json后重启docker服务即可。3. 网络、镜像源与远程连接3.1 更新源404问题根治apt update出现404是Ubuntu入门阶段最经典的老大难报错长这样Failed to fetch http://archive.ubuntu.com/ubuntu/dists/noble/InRelease 404 Not Found或者某个Release文件404。新手第一反应是网不好重试几次发现还是404其实核心原因是软件源配置里的系统版本代号和新系统不匹配。比如你是Ubuntu 24.04系统代号是noble但源文件里还写着jammy22.04的代号那archive.ubuntu.com上当然没有对应路径。处理前先搞清楚自己的系统版本lsb_release -a或cat /etc/os-release都能看到版本代号。然后看源配置文件22.04及以前用的还是/etc/apt/sources.list一行行deb开头24.04换成了新的deb822格式源文件在/etc/apt/sources.list.d/ubuntu.sources。如果你用的是国内镜像站需要在源文件里把所有archive.ubuntu.com替换成镜像站域名同时确认每一行末尾的noble、noble-updates、noble-security等组件名和你系统一致。改之前先把原文件备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak再sudo apt update验证。国内用户我建议直接用清华或者阿里云镜像源。以清华源为例24.04的ubuntu.sources里填写的是deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse以及noble-updates、noble-security等行注意security更新源对应的路径仍然是同一个镜像站域名不要把它单独写成security.ubuntu.com否则还是一样404。同时检查一下系统时间如果系统日期不对apt会因为文件时间戳“过期”而拒绝读取Release文件报错和404很像用timedatectl set-ntp true开启网络时间同步即可。3.2 上不了网的排查路径Ubuntu服务器版和桌面版的网络配置方式完全不同。桌面版用NetworkManager管理点右上角网络图标基本能搞定服务器版用的是netplan改的是/etc/netplan/目录下*.yaml文件然后sudo netplan apply。新手最容易在服务器版上卡住因为改完yaml文件直接apply时只要缩进错了、字段写错了系统立刻提示配置无效运气差还会把当前SSH连接断掉只能去控制台操作。排查网络问题我习惯按这个顺序来先ip addr看网卡有没有拿到IP地址如果网卡显示state DOWN先sudo ip link set 网卡名 up再ping 网关看内网通不通网关地址用ip route查接着ping 8.8.8.8看公网IP通不通如果IP通而ping www.baidu.com不通问题就在DNS。Ubuntu的DNS解析现在默认走systemd-resolved/etc/resolv.conf是一个软链接你直接改这个文件没用重启就被覆盖。正确做法是用sudo systemd-resolve --status查看当前DNS或者干脆在netplan的yaml文件里nameservers段落指定DNS比如8.8.8.8和114.114.114.114。新手还会有一种情况桌面版系统在路由器换了IP段之后突然断网此时用nmcli device看看网卡连接状态如果显示disconnected就nmcli device connect 网卡名手动重连。这些排查步骤看起来琐碎但练熟了之后处理服务器网络问题会非常有底。3.3 SSH服务连不上的排查清单SSH连不上占了Linux入门问题的很大比例尤其是装完Ubuntu Server后想在电脑上用FinalShell、Xshell连过去结果报Connection refused或Connection timed out。先说一个最常见的低级问题桌面版Ubuntu默认根本没装OpenSSH服务端你只装了客户端自然连不上。先执行systemctl status ssh看服务状态提示Unit ssh.service could not be found就说明没装sudo apt install openssh-server装完后systemctl enable --now ssh。如果服务已启动还是连不上就看防火墙。Ubuntu桌面版默认不开启UFW服务器版可能开着sudo ufw status确认状态sudo ufw allow 22/tcp放行端口。接着确认IP地址ip addr看当前IP如果虚拟机用的是NAT模式一般可以从宿主机直接访问虚拟机IP如果用的是桥接模式就要确保虚拟机和宿主机在同一个网段。客户端连接时建议加-v参数ssh -v userip输出会显示连接卡在哪一步。如果输出停在Connection established之后就报Permission denied八成是密码或者密钥认证问题如果卡在Unable to negotiate是双方加密算法不兼容老设备连新版本的OpenSSH常见。还有一个小细节容易被忽略服务器上如果改过端口那么ssh客户端必须加-p 端口号才能连。最初建服务器环境时建议把SSH配置放在最前面不然很多后续操作都做不了。4. 中文输入法与Linux软件生态适配4.1 中文输入法设置IBus还是Fcitx5Ubuntu中文输入法设置是问得最多的问题之一。Ubuntu 24.04桌面版默认输入法框架是IBus如果你只是想快速打中文装ibus-libpinyin就够了安装后在“设置→键盘→输入源”里添加“汉语智能拼音”重启会话即可。但IBus的拼音词库、候选词顺序和自定义词组功能都比较弱用惯了Windows输入法的人会觉得很别扭。所以我更推荐直接上Fcitx5。安装命令是sudo apt install fcitx5 fcitx5-pinyin fcitx5-chinese-addons装完后执行im-config -n fcitx5切换默认输入法框架注销重新登录。如果重启后发现还是无法调出输入法检查~/.xprofile里是否有这几行export GTK_IM_MODULEfcitx、export QT_IM_MODULEfcitx、export XMODIFIERSimfcitx没有就手动加上。Fcitx5的优势是拼音引擎可配置性强、中文词库可以自己导入搜狗词库、候选框跟随程序和主题都更友好缺点是有些Electron应用比如某些Linux版聊天工具在Wayland会话下不识别输入法表现为能切换却无法输入解决办法是给应用启动命令加--enable-featuresUseOzonePlatform,WaylandWindowDecorations或者直接换成Xorg会话登录。这里我多说一句很多新手调了半天输入法还是不显示最后发现是在登录界面用的会话类型和输入法框架不匹配。登录界面的齿轮按钮可以切换“Ubuntu on Xorg”还是“Ubuntu on Wayland”如果你在Xorg会话配置了Fcitx5就该统一用Xorg登录两边混着来会浪费很多时间。4.2 微信、播放视频与其他常用软件Linux日常软件生态这几年改善不少但Windows上很多常用软件还是没有原生Linux版。微信现在有官方Linux版deb包腾讯官网能下载安装后基本功能可用不过插件、小程序、视频号这些都少很多推荐日常使用没问题重度用户还是得另想办法。QQ也有Linux版体验反而比微信好一些。同花顺这类炒股软件没有Linux原生客户端网页版可以应急如果你每天都要盯盘频繁操作建议双系统或虚拟机解决别在Linux上硬折腾。LabVIEW在Linux下有官方支持但版本比Windows老具体安装过程建议直接搜当前版本的官方指南。Linux播放视频遇到“有画面没声音”或者“格式不支持”是很普遍的现象因为Ubuntu默认不装受专利保护的解码器安装ubuntu-restricted-extras一个包就能解决包括H.264、MP3、加密DVD等编码支持都会补上。装完之后MP4、AVI、MKV这些常见格式基本都能放。如果你喜欢下载某些ed2k链接Linux下用amule客户端可以走完下载流程但这个协议本身速度慢实际体验远不如浏览器直接下载或网盘同步省事。日常写HTML页面编辑的话VSCode从官网下deb包装上或者直接用系统自带Gedit加插件完全够用。5. 密码、系统恢复与重装5.1 忘记登录密码的两种恢复方法忘记Ubuntu密码不是世界末日不用重装系统。第一种方法是用恢复模式开机在GRUB菜单里选择“Advanced options for Ubuntu”再选带“(recovery mode)”的内核等菜单出现后选“root - Drop to root shell prompt”。此时你已经是root身份但根文件系统多半是只读挂载先执行mount -o remount,rw /重新挂载为可写再passwd 用户名设置新密码最后reboot重启。第二种方法更直接开机在GRUB菜单按e编辑启动项找到以linux开头的那一行在行尾加上init/bin/bash按CtrlX或F10启动系统会直接进入一个root的bash环境不会再要求登录。同样需要先mount -o remount,rw /然后passwd改密码。需要注意如果安装系统时启用了全盘加密LUKS进入bash时还是要先输入解密密码否则看不到任何数据不想以后被这个锁住学习阶段建议不要开启全盘加密。忘密码还有一个附加好处是顺便改掉su root密码因为passwd不带用户名时默认改的就是root密码。恢复模式下很多新手会遇到/etc/passwd不存在或者乱码报错那通常是根文件系统根本没挂载成功回到ls /看看目录结构是否正常不正常就再次确认有没有mount -o remount,rw /。这个错误自己吓自己其实没坏。5.2 sudo权限问题的恢复和忘记密码并列的高频问题是“当前用户不在sudoers组”。现象是执行sudo时提示user is not in the sudoers file. This incident will be reported.很多新手以为是系统拒绝了自己其实是安装时创建的用户默认就在sudo组而一些从别处复制过来的系统、或者用docker/容器精简出来的环境用户没有加进sudo组。解决办法同样是在恢复模式或单用户模式下执行usermod -aG sudo 用户名把用户追加到sudo组里重启即可。如果连sudo组都不存在才需要去修改/etc/sudoers。改这个文件一定要用visudo命令因为它会检查语法避免你写错后sudo彻底崩溃。visudo默认用nano编辑器打开后找到root ALL(ALL:ALL) ALL这一行在下面加一行用户名 ALL(ALL:ALL) ALL保存。这里要特别强调不要用echo xxx /etc/sudoers这种方式直接追加一旦格式写错连root都执行不了sudo到时候只能进恢复模式手动修复纯属给自己添堵。5.3 重装系统前的备份清单系统问题多到无法修复时重装确实是最快路径但重装前不做备份会非常痛。我习惯把备份分成几类首先是用户数据/home目录下的文档、代码、下载文件全部拷走其次是配置/etc目录比较复杂新手可以只备份/etc/apt/源代码配置、/etc/netplan/网络配置、/etc/ssh/sshd_config这类关键项再次是安装过的软件清单执行dpkg --get-selections packages.list备份包列表或者用apt list --manual-installed pkglist.txt。这样重装后能根据清单批量恢复软件。另一个容易被忽视的备份是服务数据比如数据库、网站上传文件、Docker数据卷。如果你跑过MySQL要mysqldump导出跑了Docker记得把/var/lib/docker/volumes下的数据卷一起备份。很多人只拷贝了项目代码忘了数据库文件重装完成才发现网站数据全没了。就算你只是学习阶段我也建议练一次“从零恢复服务”的操作把备份、重装、恢复跑通一遍这比单纯备份更考验理解。6. 显卡驱动、时间同步与虚拟机体验6.1 查看显卡驱动与安装NVIDIA驱动新手装完Ubuntu发现界面卡顿或者想玩游戏/跑模型就会陷入驱动泥潭。先学会看当前显卡状态lspci -nnk | grep -A3 VGA可以看到显卡型号和当前内核驱动比如kernel driver in use: nouveau或nvidia装了NVIDIA闭源驱动后nvidia-smi能显示显卡型号、驱动版本、显存占用。如果nvidia-smi提示command not found说明没装NVIDIA驱动。装NVIDIA驱动最简单可靠的方式是走“软件与更新→附加驱动”界面系统会自动扫描可用驱动并推荐一个版本比如nvidia-driver-535或nvidia-driver-550选中应用后重启。千万不要去NVIDIA官网下载.run文件手动安装新手很容易碰到内核头文件不匹配、DKMS编译失败、安装后进不了桌面等一系列问题。如果你已经在官网驱动上翻过车、重启后黑屏按CtrlAltF2进TTY终端登录后sudo apt purge nvidia-*清掉驱动再按软件源方案重装。装完闭源驱动后如果发现桌面卡死或登录循环常用救急手段是在GRUB启动项里加nomodeset参数它会禁用内核显卡驱动加载用基本显示模式进入系统之后再排查驱动版本问题。记住nomodeset只是临时解法不代表驱动装对了最终还是要回到附加驱动界面重新选驱动。6.2 双系统时间差8小时Windows和Ubuntu双系统的用户几乎都会遇到一个诡异问题两个系统来回切换后时间总会差8个小时。原因是两个操作系统对硬件时钟RTC的解读不一样。Linux默认把硬件时钟当成UTC时间再根据时区换算成当地时间Windows默认把硬件时钟当成当地时间不走时区换算。你从Windows切到UbuntuUbuntu把硬件时钟按UTC读又加上东八区时间就快8小时反之则慢8小时。解决办法两种任选其一不要同时改。第一种在Ubuntu里执行timedatectl set-local-rtc 1让Ubuntu也把硬件时钟当成本地时间虽然执行后系统会提示“可能会在时区切换时引起问题”但双系统场景下这是最省心的做法。第二种在Windows注册表里加一个RealTimeIsUniversal的DWORD值设为1让Windows也把RTC当UTC适合不想动Linux设置的情况。我个人倾向第一种因为Linux命令行一条命令就能解决而且之后升级系统也不会丢这个设置。6.3 虚拟机分辨率与增强工具虚拟机装完Ubuntu后分辨率固定只有800x600或1024x768这个问题不是系统坏了是没装“虚拟机增强工具”。VMware里叫open-vm-tools-desktop直接sudo apt install open-vm-tools-desktop装完重启窗口拖大分辨率会自动适配。VirtualBox里靠“安装增强功能”挂载ISO后在系统里执行安装脚本。如果装完增强工具分辨率还是上不去检查显示设置里显卡是否启用了3D加速以及虚拟机的显卡内存是否足够。还有一个经常被忽略的坑如果你在VirtualBox选了“无桌面安装”的Ubuntu Server镜像增强工具的作用就很弱想要图形界面得自己sudo apt install ubuntu-desktop安装桌面环境。很多教程说“安装桌面环境用apt install ubuntu-desktop”注意这个命令会拉来大量桌面组件体积大、耗时久而且和精简系统合不合得来还要看运气不如一开始就装桌面版镜像。7. 命令速查、后台任务与学习路线7.1 高频Linux常用命令速查新手觉得Linux命令多、记不住其实入门阶段高频命令就那几十个按场景分组记忆比零散背效率高很多。文件操作类ls/cd/pwd/cp/mv/rm/mkdir/touch/find权限类chmod/chown/usermod/groupadd进程类ps/top/kill/free网络类ip/ss/ping/curl/wget文本类cat/grep/awk/sed/vi压缩类tar/zip/unzip包管理apt update/apt install/apt remove系统日志journalctl。一个实用建议不要背参数用到什么查什么用多了自然记住。学命令最好的方式是man手册和--helpls --help显示简版参数man ls显示完整手册。但新手刚开始读man会被一堆参数劝退我的建议是先只看“常用示例”和“Description”前几段把两个命令连起来用的管道符|练熟比如ps aux | grep nginx找进程、grep -r error /var/log查日志这些组合拳比单独背命令实用得多。等你习惯在终端里查帮助之后很多问题都不需要上搜索了。7.2 后台任务不随终端退出而退出很多人遇到的问题是用SSH连上服务器跑一个脚本本地网络一断或者终端一关任务就跟着挂了。原因是终端关闭时shell会向它的子进程发送SIGHUP信号默认动作是终止进程。解决办法就是把任务从当前会话里“摘”出来。最经典的方法是nohupnohup python3 myscript.py logs.txt 21 nohup让进程忽略SIGHUP让任务放进后台执行 logs.txt 21把标准输出和错误输出都重定向到文件这样就算断开SSH进程也会继续跑。比nohup更现代的是tmuxtmux new -s mysession创建一个会话在里面跑任务按CtrlB再按D脱离会话下次tmux attach -t mysession还能回来查看。tmux的好处是你能看到任务实时输出、还能同时开多个窗口写脚本或者跑长任务时体验好太多。更正式的部署方案是写systemd服务用systemctl start托管进程开机自启、崩溃自动重启适合生产环境但入门阶段先用nohup和tmux就够。7.3 Linux面试题方向与自查如果学Linux是为了以后找运维或后端开发工作提前了解面试常问的方向会很有帮助。我把一些常见问题整理成自查清单问题考察点一句话答案参考硬链接和软链接的区别inode理解硬链接共享同一inode删除原文件不影响软链接是独立文件保存路径原文件删除后失效僵尸进程怎么产生怎么处理进程状态理解子进程退出后父进程没有调用wait()进程变僵尸父进程退出或手动kill父进程后由init进程回收如何查看端口占用网络排查能力ss -tlnp或netstat -tlnp定位PID后确认对应进程文件权限644、755是什么意思权限体系基础三个数字分别表示属主/属组/其他人4读2写1执行进程间通信方式有哪些系统和应用综合理解管道、消息队列、共享内存、信号量、SocketLinux启动流程大致是什么引导过程综合BIOS/UEFI→引导器→内核→init/systemd→用户登录这些题背后对应的都是真实工作场景。比如僵尸进程问题在运维日志里经常会出现ps aux看到一堆defunct进程处理方法就是让父进程正常退出或重启相关服务。我的建议是不要死背答案而是把每道题对应的实验在虚拟机里做一遍理解了才记得住。7.4 常见问题速查表把这一期里所有出现过的典型问题汇总成一张表方便以后快速定位现象可能原因快速解决apt update 404版本代号错误/源失效备份源文件替换正确镜像源apt updateapt install gcc找不到包没先更新源/软件源配置坏apt update后再装或检查源地址终端命令全找不到了PATH被改坏export PATH/usr/bin:/bin修复配置文件中文输入法调不出来输入法框架没切换im-config -n fcitx5注销重登SSH连接被拒绝服务端没装openssh-serverapt install openssh-server启动服务SSH连接超时防火墙拦截/虚拟机网络不通ufw allow 22/tcp检查NAT/桥接模式虚拟机宿主机蓝屏Hyper-V与VMware冲突关闭Hyper-V或VBS相关功能忘记登录密码密码记混恢复模式单用户下passwd重置时间差8小时RTC时区解释不一致timedatectl set-local-rtc 1视频放不了/没声音缺专利解码器安装ubuntu-restricted-extras任务关终端就断SIGHUP信号nohup或tmux挂后台分辨率只有800x600没装增强工具VMware装open-vm-tools-desktopVirtualBox装增强功能这张表不是让你背而是遇到问题先看现象再对行列的排查方向去查详细章节。7.5 零基础要不要直接啃Linux内核热词里经常看到“linux底层原理”“零基础深入理解linux操作系统内核”这类内容很多新手觉得自己连基础命令没学完就该去看内核源码。我的看法完全不同。学习Linux内核的前提是已经有扎实的C语言功底、懂数据结构、了解计算机组成原理否则源码里的链表、哈希表、内存屏障、调度器代码基本都是天书。更合适的学习路径是先通过top、free、strace、perf这些工具观察系统行为比如看一个进程怎么被调度、一个文件读操作经过哪些系统调用再带着问题去看内核模块和文档这样理解反而更快。真要走嵌入式Linux方向的话建议从“交叉编译”这个点切入搞明白为什么ARM板子不能用PC上的gcc直接编出可执行文件然后尝试给一块开发板编一个简单的字符设备驱动。这个过程会遇到很多环境问题但每一个问题都是在加深对操作系统底层机制的理解。入门阶段不要追求“读内核源码”而是追求“用对机制、查得到底层原因”等有几年基础和项目经验后再回头读源码会发现顺畅很多。8. 写在最后给下一期学员的几点提醒这一期问题汇总聊到这儿我想多说几句实操层面的体会。最明显的一点是很多问题其实不是技术问题而是排查顺序问题。比如网络不通一上来就去改配置文件却忘了先看IP有没有分配最后绕了一大圈发现是网卡没启动。学会按“现象→日志→最小测试”的顺序排查比记住一堆命令更重要。另一个体会是Linux学习一定要有小步快跑的反馈感每学一个新命令就在虚拟机里折腾一个小场景比如用find找回一个移动过的文件、用awk处理一个文本表格用完自然就记住了光看不动手三天就忘光。最后再分享一个小技巧遇到任何自己解决过的问题记在一个本地Markdown文件里把错误信息、报错截图和解决过程写下来。因为Linux生态更新很快这周遇到的坑几周后遇到几乎会出现一模一样的错误翻自己的笔记比重新搜索快得多。我建第一期学习群的这些天亲眼看到很多人从完全不会装系统到能独立配好开发环境、部署小服务区别就在于有没有坚持把每一次“翻车”变成自己的经验。下一期我准备把进程管理、Shell脚本和systemd拆开来细讲这些都是入门之后立刻要用到的内容到时候继续把问题汇总整理成这种形式方便大家对照排查。
返回列表