入門必備:從命令到系統(tǒng)管理一次講透)
很多剛接觸 Linux 的朋友第一反應(yīng)是這系統(tǒng)怎么這么難用黑乎乎的窗口里連個(gè)按鈕都找不到。我在帶新人或者給同事做內(nèi)訓(xùn)時(shí)被問得最多的就是“我從哪里開始這些命令到底要背哪些裝個(gè)系統(tǒng)怎么一堆坑” 這篇《Linux基礎(chǔ)2入門必備》就是回應(yīng)這些問題的。它是系列文章的第二篇面向已經(jīng)準(zhǔn)備上手、或者剛裝好虛擬機(jī)、甚至尚未決定用哪個(gè)發(fā)行版的人把 Linux 入門路上最關(guān)鍵的心智模型、環(huán)境準(zhǔn)備、文件操作、用戶權(quán)限、進(jìn)程網(wǎng)絡(luò)排查、軟件安裝和常見坑一次性講透。核心關(guān)鍵詞只有一個(gè)你的Linux 常用命令和系統(tǒng)基礎(chǔ)認(rèn)知能支撐你干多少事。這篇內(nèi)容不求覆蓋所有冷門細(xì)節(jié)只求把新手期最容易卡殼的環(huán)節(jié)全部打通讓零基礎(chǔ)的人也能動(dòng)手讓有基礎(chǔ)但不系統(tǒng)的人補(bǔ)全框架。1. 先把 Linux 的“底層思維”掰正1.1 一切皆文件Linux 最核心的心智模型Linux 之所以和 Windows 給人的感覺完全不同根子在“一切皆文件”這個(gè)設(shè)計(jì)哲學(xué)上。磁盤分區(qū)是文件網(wǎng)絡(luò)接口是文件鍵盤鼠標(biāo)輸入是文件甚至進(jìn)程狀態(tài)也能通過文件來查看和操作。聽起來抽象但你一旦接受這個(gè)設(shè)定很多命令的設(shè)計(jì)邏輯就順了。舉個(gè)例子你在終端里看到的輸入輸出在 Linux 看來就是一個(gè)“標(biāo)準(zhǔn)輸入文件”和“標(biāo)準(zhǔn)輸出文件”。重定向符號(hào)把一個(gè)命令的輸出寫到文件里管道符|把前一個(gè)命令的輸出直接作為后一個(gè)命令的輸入本質(zhì)上都是“文件對(duì)文件”的搬運(yùn)。理解到這一層你就知道為什么 Linux 命令可以用各種方式組合在一起因?yàn)榇蠹叶荚谔幚砦募涌诮y(tǒng)一了。實(shí)操層面不需要想得太深只需要記住目錄是文件的集合設(shè)備也是文件配置大多也是文本文件。學(xué)習(xí) Linux 優(yōu)先學(xué)“如何在文件世界里穿梭”而不是先死磕內(nèi)核原理。這也是為什么入門階段大量時(shí)間都花在cd、ls、cat、vim、find這些命令上它們說白了就是處理文件的工具。1.2 權(quán)限不是擺設(shè)理解屬主、屬組、其他人Linux 系統(tǒng)里經(jīng)常遇到 Permission denied也就是權(quán)限不足。新手最常見的反應(yīng)是加sudo這能解決眼前問題但如果不理解權(quán)限模型以后再碰同一個(gè)錯(cuò)還是會(huì)慌。Linux 的權(quán)限模型圍繞“誰”和“能干什么”展開。“誰”分成三個(gè)維度屬主所有者、屬組、其他人?!澳芨墒裁础本褪亲x、寫、執(zhí)行這三件事。你在終端里敲ls -l會(huì)看到一串類似-rw-r--r--的輸出第一位表示類型-是普通文件d是目錄剩下九個(gè)字符每三個(gè)一組分別對(duì)應(yīng)屬主、屬組、其他人的讀、寫、執(zhí)行權(quán)限。這份模型看著簡單但坑在目錄權(quán)限上。目錄的寫權(quán)限決定你能不能在里面新建或刪除文件目錄的執(zhí)行權(quán)限決定你能不能“進(jìn)入”這個(gè)目錄。也就是說對(duì)一個(gè)目錄只有rw-權(quán)限而沒有x你照樣進(jìn)不去。規(guī)則本身邏輯自洽但和 Windows 那種“改一下就行”的習(xí)慣完全不同。入門階段做練習(xí)建議刻意思考每個(gè)文件屬主是誰、為什么給這個(gè)權(quán)限比單純敲命令進(jìn)步快得多。1.3 命令行思維拒絕圖形界面依賴很多人問Linux 現(xiàn)在桌面也挺好看為什么非要學(xué)命令行我的回答是命令行不是“復(fù)古選擇”而是 Linux 最穩(wěn)定、最可控、最可腳本化的交互方式。你在圖形界面里點(diǎn)擊的每一件事背后幾乎都有一個(gè)對(duì)應(yīng)命令而命令是可以寫進(jìn)腳本、定時(shí)執(zhí)行、遠(yuǎn)程觸發(fā)的。學(xué)會(huì)命令行你才真正開始“操作”系統(tǒng)而不是“使用”系統(tǒng)。更重要的是服務(wù)器環(huán)境、嵌入式設(shè)備、容器鏡像絕大多數(shù)沒有圖形界面。你遲早要在純命令行環(huán)境里完成一切工作。所以從入門第一天起建議默認(rèn)使用終端操作用vim或nano改文件用top看負(fù)載用systemctl管理服務(wù)。這個(gè)過程一開始會(huì)慢但肌肉記憶一旦建立效率是圖形界面的十倍。而且命令行提示符會(huì)告訴你“你是誰、在哪臺(tái)機(jī)器、在什么目錄”這些信息能讓你在操作服務(wù)器時(shí)減少誤操作。2. 裝一個(gè)能練手的系統(tǒng)環(huán)境準(zhǔn)備與常見坑2.1 發(fā)行版選型Ubuntu、CentOS/Rocky 還是 KaliLinux 發(fā)行版多如牛毛新人最糾結(jié)的第一道題就是“我裝哪個(gè)”。我的建議很直白如果目的是學(xué)習(xí)通用 Linux 基礎(chǔ)和日常開發(fā)選 Ubuntu 最新 LTS 版本如果跟著運(yùn)維教程走、以后想做服務(wù)器運(yùn)維可以選Rocky Linux 或 AlmaLinux如果對(duì)安全測(cè)試感興趣Kali Linux 可以裝來玩但不要把它當(dāng)日常系統(tǒng)用。Ubuntu 的文檔最全、社區(qū)最大、遇到問題最容易搜到答案這一點(diǎn)對(duì)新手極其重要。很多教程推薦 Ubuntu 的理由是“軟件多、依賴好解決”這是真話。apt倉庫里的軟件包數(shù)量龐大基本覆蓋常見需求。Rocky Linux 延續(xù)了 CentOS 的生態(tài)在服務(wù)器領(lǐng)域非常穩(wěn)但桌面體驗(yàn)和軟件新鮮度不如 Ubuntu。如果你是拿自己的電腦裝虛擬機(jī)練習(xí)Ubuntu 桌面版體驗(yàn)最平滑如果你目標(biāo)很明確就是運(yùn)維Rocky 命令行版本也夠用但入門坡度稍陡。注意不要同時(shí)裝三個(gè)系統(tǒng)然后來回切換新手最怕的就是“環(huán)境不統(tǒng)一導(dǎo)致問題無法復(fù)現(xiàn)”。先選定一個(gè)遇到問題解決一個(gè)等基礎(chǔ)扎實(shí)了再玩其他發(fā)行版不遲。2.2 虛擬機(jī)安裝與實(shí)踐中的“藍(lán)屏”問題虛擬機(jī)裝 Linux 是最安全的上手方式因?yàn)椴挥绊懰拗鳈C(jī)。選 VMware Workstation 或 VirtualBox 都行VMware 對(duì)硬件兼容更好VirtualBox 免費(fèi)且跨平臺(tái)。創(chuàng)建虛擬機(jī)時(shí)主要注意資源分配內(nèi)存建議至少 2GB 起步CPU 給 2 核以上硬盤容量建議 40GB 以上。如果只是想練命令硬盤可以小一點(diǎn)但以后裝 Docker、MySQL 等軟件時(shí)空間就會(huì)很緊張。熱詞里有一條“虛擬機(jī)安裝 linux 藍(lán)屏”這屬于常見問題。先說明藍(lán)屏不是 Linux 系統(tǒng)本身的問題而是虛擬機(jī)或宿主機(jī)層面的沖突。常見原因有三類其一宿主機(jī)開啟了 Hyper-V 或內(nèi)存完整性功能與 VMware/VirtualBox 沖突其二虛擬機(jī)內(nèi)分配的顯存或內(nèi)存不足導(dǎo)致圖形環(huán)境崩潰其三下載的鏡像文件損壞或 ISO 格式不完整。針對(duì)第一個(gè)原因最快的排查辦法是關(guān)閉 Hyper-V 相關(guān)功能或者換 VirtualBox 試一下。針對(duì)第二個(gè)原因在安裝系統(tǒng)時(shí)選擇不帶圖形界面的 Server 版或者安裝時(shí)直接用文本模式能大幅降低藍(lán)屏概率。第三個(gè)原因最簡單下載鏡像后校驗(yàn)一下 SHA256 哈希值再安裝。很多時(shí)候裝完不藍(lán)屏、一分區(qū)就藍(lán)屏大概率是鏡像沒校驗(yàn)或虛擬磁盤分配異常這時(shí)候重建虛擬機(jī)并重置磁盤類型為 IDE 或 SATA 即可。2.3 WSL 作為輕量替代方案如果不想用虛擬機(jī)Windows 上的 WSLWindows Subsystem for Linux是非常順滑的替代品。尤其對(duì)只用命令行練習(xí)的入門用戶WSL 啟動(dòng)快、占用資源小、能直接訪問 Windows 文件系統(tǒng)方便程度遠(yuǎn)超虛擬機(jī)。但要注意熱詞里提到的“WSL needs updatingyour version of Windows Subsystem for Linux (WSL) is too old”這個(gè)報(bào)錯(cuò)它意味著當(dāng)前系統(tǒng)的 WSL 內(nèi)核版本過舊需要更新。解決辦法很直接在管理員權(quán)限的 PowerShell 里執(zhí)行wsl --update把 WSL 內(nèi)核更新到新版本。如果執(zhí)行更新后仍報(bào)同樣錯(cuò)誤檢查 Windows 系統(tǒng)版本是否過舊部分老版本 Windows 10 需要先開啟“適用于 Linux 的 Windows 子系統(tǒng)”功能再手動(dòng)安裝 WSL2 內(nèi)核更新包。WSL 和虛擬機(jī)各有優(yōu)勢(shì)我的建議是練習(xí)基礎(chǔ)命令用 WSL練習(xí)完整系統(tǒng)管理操作用虛擬機(jī)二者互補(bǔ)。3. 文件、目錄與用戶入門必會(huì)的三件套3.1 文件系統(tǒng)目錄規(guī)范知道自己在哪兒Linux 的文件目錄結(jié)構(gòu)一開始看著嚇人其實(shí)有規(guī)律。根目錄/下面是各個(gè)標(biāo)準(zhǔn)目錄/etc放配置文件、/var放經(jīng)常變化的數(shù)據(jù)如日志、/home是普通用戶的家目錄、/tmp是臨時(shí)文件、/usr是程序安裝目錄、/opt放第三方軟件。新手不需要全部記住但要知道一個(gè)原則配置文件大多在 /etc用戶數(shù)據(jù)大多在 /home日志大多在 /var/log系統(tǒng)命令大多在 /bin、/usr/bin、/sbin。這個(gè)認(rèn)知的價(jià)值在于出了問題你知道去哪找線索。比如 Nginx 故障第一反應(yīng)是看/var/log/nginx/error.log修改網(wǎng)絡(luò)配置先想到/etc/network/或/etc/sysconfig/network-scripts/用戶登錄信息查看/etc/passwd。很多網(wǎng)上查到的排查教程都是基于這個(gè)目錄約定在走你心里有地圖就不用每一步都靠搜。實(shí)際命令層面pwd查看當(dāng)前路徑cd切換目錄ls查看目錄內(nèi)容這是最基礎(chǔ)的三板斧。額外提醒一點(diǎn)ls -a才能看到隱藏文件以.開頭的文件隱藏文件通常藏配置信息比如~/.bashrc就是 Bash 的配置文件改別名、改提示符都在這里。你如果發(fā)現(xiàn)自己設(shè)置的別名重啟就失效多半是寫錯(cuò)了文件或沒有執(zhí)行source ~/.bashrc。3.2 高頻文件操作命令速查文件操作命令是日常使用頻率最高的部分表里列的是我最常用的組合個(gè)人認(rèn)為新手背這一張表就夠了。操作目標(biāo)關(guān)鍵命令說明查看文件內(nèi)容cat/less/tail -fcat適合小文件less適合大文件分頁tail -f實(shí)時(shí)跟蹤日志復(fù)制、移動(dòng)、刪除cp/mv/rm注意rm -rf極其危險(xiǎn)目錄刪除需謹(jǐn)慎查找文件find /path -name *.conf按名稱查找配合-type f指定類型對(duì)比文件異同diff常用于比較配置修改前后差異計(jì)算文件校驗(yàn)值sha256sum下載鏡像后校驗(yàn)完整性必備歸檔壓縮tar -czvf/tar -xzvf打包并壓縮解壓時(shí)注意路徑需要展開說下tar很多人第一次用這里就翻車。tar -czvf xxx.tar.gz /path表示創(chuàng)建、壓縮、顯示過程、指定文件名-x是解壓、-z是 gzip 壓縮、-v是顯示詳細(xì)過程、-f必須放在最后指定文件名。我習(xí)慣寫全參數(shù)避免記混。解壓到指定目錄用-C參數(shù)例如tar -xzvf xxx.tar.gz -C /home/user/app。cp和mv也有細(xì)節(jié)。mv在同分區(qū)是改個(gè)名字瞬間完成跨分區(qū)則是先復(fù)制再刪除大文件時(shí)你會(huì)感覺到明顯的等待。用cp -r復(fù)制目錄時(shí)必須加-r參數(shù)否則會(huì)報(bào)錯(cuò)這是非常經(jīng)典的新手失誤。rm命令刪除的默認(rèn)不帶回收站目錄也不要有僥幸心理確定刪除前先ls看清楚目標(biāo)是什么。給所有人的建議盡量使用絕對(duì)路徑配合嚴(yán)格的通配符不要圖快敲rm -rf /path/*這種命令。3.3 用戶與權(quán)限管理實(shí)操Linux 基礎(chǔ)入門繞不開用戶管理因?yàn)楹芏嘈率植僮鞣?wù)器時(shí)明明有 root 權(quán)限卻排查不出問題問題往往出在用戶和文件權(quán)限的匹配上。核心命令是useradd、usermod、passwd、userdel、groupadd這些。創(chuàng)建一個(gè)普通用戶并為其設(shè)置密碼的操作是# 創(chuàng)建用戶指定家目錄和默認(rèn) shell sudo useradd -m -s /bin/bash zhangsan # 設(shè)置密碼 sudo passwd zhangsan參數(shù)-m表示同時(shí)創(chuàng)建家目錄-s指定登錄 Shell。如果你不加-m用戶就沒有家目錄登錄后可能直接進(jìn)入/目錄并且很多初始化腳本會(huì)報(bào)錯(cuò)。這是新手最容易忽略的坑。創(chuàng)建完用戶后想要讓用戶有 sudo 權(quán)限用usermod -aG sudo zhangsanUbuntu或usermod -aG wheel zhangsanCentOS/Rocky。注意-aG中的-a必須寫表示追加到組不寫會(huì)把用戶從其他組里全部移出。用戶相關(guān)文件的檢查也很有用/etc/passwd存儲(chǔ)用戶基本信息/etc/shadow存放密碼哈希/etc/group存放組信息。永遠(yuǎn)不要手動(dòng)編輯 shadow 文件修改密碼一律用passwd命令。用戶組的作用在于權(quán)限共享比如一個(gè)項(xiàng)目組共用/srv/data目錄把所有成員加入同一個(gè)組并將目錄屬組改成該組、開啟組寫權(quán)限協(xié)作就順暢了。命令參考# 把 data 目錄屬組改為 devops并允許組內(nèi)寫 sudo chgrp -R devops /srv/data sudo chmod -R grwX /srv/data這里chmod用的是符號(hào)模式grwX表示給屬組添加讀、寫權(quán)限X大寫表示“如果目標(biāo)是目錄或已有執(zhí)行權(quán)限的文件則添加執(zhí)行權(quán)限”這樣不會(huì)給普通文件亂加執(zhí)行權(quán)限很實(shí)用。權(quán)限這塊我強(qiáng)烈建議拿一個(gè)臨時(shí)目錄反復(fù)演練直到chmod、chown、chgrp三個(gè)命令不看幫助也能正確使用再往前進(jìn)階。4. 進(jìn)程、網(wǎng)絡(luò)與系統(tǒng)狀態(tài)排查4.1 進(jìn)程管理從啟動(dòng)到清理Linux 系統(tǒng)卡了、服務(wù)器負(fù)載高了、程序起不來了本質(zhì)都要回到進(jìn)程管理上。入門階段你要掌握的命令是ps、top、htop、kill、systemctl。先用ps -ef或ps aux查看當(dāng)前進(jìn)程列表ps aux輸出的 PID進(jìn)程號(hào)是你后續(xù)管理進(jìn)程的關(guān)鍵。要實(shí)時(shí)看資源占用輸入top按P按 CPU 排序按M按內(nèi)存排序按q退出。很多服務(wù)器問題都能在top里看出眉目CPU 占比高的進(jìn)程是誰內(nèi)存耗盡沒有負(fù)載平均值是不是超過 CPU 核數(shù)了查到了某個(gè)進(jìn)程想結(jié)束它用kill PID結(jié)束不了的用kill -9 PID強(qiáng)殺。關(guān)于信號(hào)普通kill發(fā)的是SIGTERM進(jìn)程有機(jī)會(huì)清理殘留優(yōu)雅退出kill -9發(fā)的是SIGKILL強(qiáng)制殺掉不能清理資源可能導(dǎo)致文件鎖殘留。盡量先普通 kill不行再強(qiáng)殺這是一條實(shí)戰(zhàn)正確的習(xí)慣。服務(wù)層面更規(guī)范的對(duì)象是systemd單元。啟動(dòng)服務(wù)用systemctl start nginx開機(jī)自啟用systemctl enable nginx查看服務(wù)狀態(tài)用systemctl status nginx。新手最容易遇到的報(bào)錯(cuò)是服務(wù)啟動(dòng)失敗此時(shí)不要光看提示要執(zhí)行journalctl -u nginx查看詳細(xì)日志日志里往往直接寫了失敗原因比如端口被占用、配置文件語法錯(cuò)誤。這一步比盲目重啟一百次都有效。4.2 網(wǎng)絡(luò)排查命令不抓瞎的第一步很多入門者覺得網(wǎng)絡(luò)排查很難其實(shí) Linux 的排查路徑非常固定。先看地址配置ip addr或更老的ifconfig部分系統(tǒng)需安裝 net-tools??茨J(rèn)路由用ip route測(cè)試連通性用ping檢查域名解析用dig或nslookup。最被我頻繁使用的是ss -tunlp它能展示所有監(jiān)聽中的 TCP/UDP 端口以及對(duì)應(yīng)的進(jìn)程名和 PID。端口被占用時(shí)執(zhí)行這條命令就能定位元兇。排查思路可以套一個(gè)固定模板先確認(rèn)網(wǎng)卡是否有 IP再ping網(wǎng)關(guān)看本機(jī)到路由器是否通再ping外部地址看出口是否正常最后用dig確認(rèn)域名解析有沒有問題。按這個(gè)順序走80% 的網(wǎng)絡(luò)故障能定位到具體環(huán)節(jié)。比如ping不通但網(wǎng)關(guān)能通說明本機(jī)網(wǎng)絡(luò)沒問題問題在外部鏈路或被防火墻攔了。防火墻相關(guān)也要會(huì)一點(diǎn)。Ubuntu 自帶ufwCentOS/Rocky 用firewalld基礎(chǔ)操作都是“允許/拒絕端口”。如果服務(wù)明明啟動(dòng)了但外部就是訪問不了先看防火墻有沒有放行對(duì)應(yīng)端口再確認(rèn)服務(wù)的監(jiān)聽地址不是127.0.0.1而是0.0.0.0。這里的細(xì)節(jié)監(jiān)聽 127.0.0.1 表示只能本機(jī)訪問外網(wǎng)訪問需要修改監(jiān)聽地址很多新手在云服務(wù)器上部署應(yīng)用踩的就是這個(gè)坑。4.3 系統(tǒng)資源監(jiān)控與日志查詢進(jìn)程和網(wǎng)絡(luò)之外系統(tǒng)資源監(jiān)控和日志查詢是判斷機(jī)器健康的眼睛。free -h查看內(nèi)存使用df -h查看磁盤分區(qū)使用du -sh /path查看某個(gè)目錄占用大小。這幾個(gè)命令簡單但關(guān)鍵時(shí)刻能救命。我的經(jīng)驗(yàn)是服務(wù)器告警時(shí)先跑top、free -h、df -h三個(gè)命令基本能確定是 CPU、內(nèi)存還是磁盤爆了。日志查詢是排查問題的金礦。Linux 的系統(tǒng)日志集中在/var/log常見的有syslog、messages、journal由 journald 管理。用journalctl查詢所有日志很方便比如查看最近一次的啟動(dòng)日志journalctl -b -1查看某個(gè)服務(wù)的最近日志journalctl -u nginx --since 10 minutes ago。日志文件可能很大查詢時(shí)一定要帶時(shí)間范圍或關(guān)鍵字過濾避免一次性刷屏。提示日志查詢時(shí)不要用cat /var/log/syslog直接讀大文件文件可能幾百 MB會(huì)把終端卡死。習(xí)慣用tail -n 100查看末尾、用grep過濾關(guān)鍵字、用less分頁查看效率完全不同。5. 裝軟件與搭開發(fā)環(huán)境最??ㄗ∧愕囊画h(huán)5.1 包管理器apt 與 yum/dnf 的正確用法Linux 裝軟件最怕在依賴關(guān)系上繞來繞去包管理器就是為了解決這個(gè)問題存在的。Ubuntu 用aptCentOS/Rocky 用dnf老版本是yum。核心操作很相似裝軟件用install刪除用remove搜索用search更新索引用update升級(jí)現(xiàn)有軟件用upgrade。一個(gè)常見的坑是權(quán)限安裝軟件必須用sudo因?yàn)閷懭氲氖窍到y(tǒng)目錄。另一個(gè)坑是“裝不上、找不到包”。此時(shí)先執(zhí)行sudo apt update更新索引再裝如果還是找不到可能是倉庫里沒有這個(gè)軟件需要用第三方源或編譯安裝。比如在 Ubuntu 上裝某個(gè)較新的軟件時(shí)老版本 LTS 倉庫里版本可能偏舊可以通過添加 PPA 或官方源解決但添加源之后必須再執(zhí)行一次update否則新源不生效。卸載軟件時(shí)apt remove只刪軟件本身purge連配置文件一起刪apt autoremove可以清理不再需要的依賴。如果你發(fā)現(xiàn)裝了個(gè)軟件把一堆依賴帶進(jìn)來了卸載時(shí)用apt autoremove清理會(huì)有驚喜。但注意別在系統(tǒng)剛裝完時(shí)亂跑 autoremove否則可能把基礎(chǔ)依賴誤刪這是我實(shí)測(cè)過的教訓(xùn)。5.2 源碼編譯與 Python 環(huán)境安裝不是所有軟件都能從倉庫直接裝上有時(shí)候你需要從源碼編譯。經(jīng)典三步./configure、make、make install。配置階段用--prefix路徑指定安裝位置用--with-xxx開關(guān)功能等看到“configuration succeeded”再繼續(xù)。make是編譯make install是安裝后者需要 root 權(quán)限。如果編譯過程報(bào)錯(cuò)缺頭文件先裝編譯工具鏈Ubuntu 用build-essentialCentOS 用dnf groupinstall Development Tools。熱詞里有“l(fā)inux系統(tǒng)安裝 Python”這個(gè)場(chǎng)景非常典型。當(dāng)你需要在沒有圖形界面的服務(wù)器上裝 Python 時(shí)優(yōu)先用系統(tǒng)包管理器安裝sudo apt install python3 python3-pip。想要多版本共存推薦使用pyenv或conda。conda的坑是安裝后環(huán)境變量不生效需要把初始化語句寫入~/.bashrc再執(zhí)行source ~/.bashrc。熱詞里提到的“l(fā)inux設(shè)置anaconda環(huán)境變量”就是這個(gè)過程。編譯安裝 Python 的流程也不難但有幾個(gè)參數(shù)建議加上./configure --enable-optimizations能啟用性能優(yōu)化缺點(diǎn)是安裝時(shí)間會(huì)變長。裝完記得把/usr/local/bin/python3加入 PATH或者直接用update-alternatives管理版本。不建議直接覆蓋系統(tǒng)自帶的系統(tǒng) Python后期依賴會(huì)亂成一團(tuán)你會(huì)在幾個(gè)月后踩大坑。5.3 Docker 與 MySQL 等服務(wù)類軟件安裝服務(wù)類軟件安裝我單獨(dú)拿出來說是因?yàn)樗砹艘活愋枨笠院笱b Redis、Nginx、MySQL 都會(huì)用到相似的思路。以 Docker 為例官方推薦方式是通過官方倉庫安裝不要直接apt install docker.io然后完事。正確流程是先安裝依賴、添加 Docker 官方 GPG 密鑰、添加源再安裝 docker-ce。安裝完成后新手第一件事是把自己加入 Docker 用戶組否則每次執(zhí)行docker命令都要加sudo非常難受sudo usermod -aG docker $USER newgrp docker # 或者重新登錄Docker 跑起來測(cè)試docker run hello-world看到“Hello from Docker”就成功了。過程中如果遇到權(quán)限問題大概率是用戶組沒生效需要重新登錄或執(zhí)行newgrp。MySQL 的安裝有點(diǎn)特殊。Ubuntu 上執(zhí)行sudo apt install mysql-server后默認(rèn) root 賬號(hào)經(jīng)常需要通過sudo mysql進(jìn)入然后手動(dòng)修改認(rèn)證方式。初始化時(shí)執(zhí)行sudo mysql_secure_installation可以設(shè)置安全選項(xiàng)比如移除匿名用戶、禁止遠(yuǎn)程 root 登錄。裝完 MySQL 后服務(wù)默認(rèn)監(jiān)聽 127.0.0.1:3306不允許外部連接要允許遠(yuǎn)程訪問需要修改監(jiān)聽地址和用戶權(quán)限。這個(gè)操作涉及安全配置不建議在公網(wǎng)環(huán)境開啟練手時(shí)只在虛擬機(jī)內(nèi)部測(cè)試即可。6. 常見問題與排查技巧實(shí)錄6.1 權(quán)限拒絕、依賴沖突等經(jīng)典報(bào)錯(cuò)入門階段你會(huì)反復(fù)遇到三類報(bào)錯(cuò)權(quán)限拒絕、命令找不到、軟件包依賴沖突。第一類Permission denied先確認(rèn)當(dāng)前用戶是誰再看文件屬主和權(quán)限。想執(zhí)行某個(gè)文件卻被拒絕可能是文件沒有執(zhí)行權(quán)限用chmod x修復(fù)可能文件系統(tǒng)掛了 noexec 選項(xiàng)檢查掛載參數(shù)也有可能是磁盤滿了寫不進(jìn)去用df -h查看。第二類command not found不一定是你命令敲錯(cuò)也可能是軟件裝到了/usr/local/bin但 PATH 沒包含這個(gè)目錄。解決方案是修改~/.bashrc添加export PATH/usr/local/bin:$PATH然后source一下。我見過太多人在這一步放棄其實(shí)只是沒把路徑加進(jìn)環(huán)境變量而已。第三類依賴沖突比如apt install提示依賴版本不對(duì)或者卸載軟件時(shí)把公共庫刪了導(dǎo)致其他軟件不可用。思路很簡單先apt update更新依賴信息再嘗試apt --fix-broken install修復(fù)破損依賴實(shí)在不行檢查是否安裝了錯(cuò)誤的軟件源。不要隨意混用不同來源的安裝包尤其不要持一個(gè) deb/rpm 包到處裝跳過的依賴會(huì)在輕輕松松的時(shí)間點(diǎn)反噬你。6.2 虛擬機(jī)安裝 Linux 藍(lán)屏的解決思路前面提到“虛擬機(jī)安裝 linux 藍(lán)屏”這里給出更系統(tǒng)的排查思路。藍(lán)屏出現(xiàn)的位置很關(guān)鍵如果發(fā)生在啟動(dòng) ISO 之前說明虛擬化環(huán)境有問題如果發(fā)生在分區(qū)階段或安裝進(jìn)行中多半是鏡像或磁盤配置問題。第一步檢查宿主機(jī)是否開啟 Hyper-V、Memory Integrity內(nèi)存完整性、VBS基于虛擬化的安全性。Windows 安全中心的“內(nèi)核隔離”功能會(huì)與第三方虛擬機(jī)軟件沖突關(guān)閉后再試。第二步更換虛擬機(jī)軟件類型VMware 與 VirtualBox 的虛擬化實(shí)現(xiàn)不同有時(shí)候 VMware 不行換 VirtualBox 就正常反之亦然。第三步將虛擬機(jī)設(shè)置的“系統(tǒng)→固件類型”從 UEFI 改成 BIOS部分 Linux 發(fā)行版在 UEFI 環(huán)境下的兼容性不如 BIOS切換后重啟即可。如果以上都不行下載一個(gè)輕量發(fā)行版做測(cè)試比如 Linux Mint、Xubuntu體積小、對(duì)硬件要求低先確認(rèn)是系統(tǒng)的問題還是硬件的問題。另外安裝時(shí)盡量選擇“Server”或“Minimal”模式避開圖形界面初始化階段的顯卡兼容問題。這個(gè)模式下藍(lán)屏概率會(huì)大幅下降安裝完成后手動(dòng)安裝圖形環(huán)境也是可行路徑。6.3 新手求助前必做的三件事遇到問題新手第一反應(yīng)就是發(fā)帖求助。但很多求助貼回答率低不是因?yàn)閱栴}太難而是提問者沒有提供足夠信息。我在經(jīng)驗(yàn)分享中最想強(qiáng)調(diào)的是提問之前先自己收集這三樣?xùn)|西。第一報(bào)錯(cuò)原文。不要只寫“我裝軟件失敗了”把終端里的完整錯(cuò)誤信息復(fù)制出來。第二環(huán)境和操作步驟。你要說明“Ubuntu 22.04、新裝的虛擬機(jī)、執(zhí)行 sudo apt install xxx 后報(bào)以下錯(cuò)誤”這些背景信息能幫別人快速定位。第三已嘗試的方法。哪怕只是試過apt update也要寫出來別人就不用重復(fù)建議。收集方式很簡單執(zhí)行命令時(shí)用sudo apt install xxx 21 | tee /tmp/install.log把回顯保存下來然后將日志關(guān)鍵行連同背景發(fā)出來。如果你連解決什么問題都描述不清可以先把uname -a、cat /etc/os-release、df -h這些基礎(chǔ)信息貼出來。這不算麻煩而是對(duì)幫你的人負(fù)責(zé)也是自己排查能力成長最快的路徑。7. 從入門到能干活還需要補(bǔ)充什么7.1 腳本編程與自動(dòng)化當(dāng)你發(fā)現(xiàn)同一串命令反復(fù)敲、每個(gè)都要看一遍確認(rèn)時(shí)就該寫腳本了。Linux 的 Shell 腳本是邁入自動(dòng)化的第一步本質(zhì)是把命令編排成文件批量執(zhí)行。入門腳本只需要掌握變量、條件判斷、for 循環(huán)、函數(shù)四個(gè)概念。比如備份目錄的腳本核心邏輯就是“定義源目錄和目標(biāo)目錄創(chuàng)建帶日期后綴的備份目錄用 tar 打包解壓”。腳本寫好后用chmod x backup.sh賦予執(zhí)行權(quán)限再放到 cron 定時(shí)任務(wù)里就實(shí)現(xiàn)了無人值守備份。學(xué)習(xí)腳本最早期的收益立竿見影批量ping一堆 IP、批量改文件名、批量安裝軟件包全部幾行搞定。有了腳本基礎(chǔ)再去看 Ansible、Shell 查詢、監(jiān)控告警等運(yùn)維工具你會(huì)發(fā)現(xiàn)思路都是相通的。7.2 進(jìn)程間通信與嵌入式方向如果你走開發(fā)或嵌入式路線Linux 的“進(jìn)程間通信”是繞不開的知識(shí)點(diǎn)。簡單說就是兩個(gè)進(jìn)程怎么交換數(shù)據(jù)管道、消息隊(duì)列、共享內(nèi)存、信號(hào)、套接字。表面上看這是系統(tǒng)編程書里的內(nèi)容但理解它對(duì)你排查“程序?yàn)槭裁床l(fā)有問題”或者看ss輸出時(shí)都有幫助。嵌入式 Linux 方向尤其重視這些因?yàn)樵O(shè)備上的進(jìn)程處理能力有限通信效率直接決定穩(wěn)定性。熱詞里的“嵌入式linux項(xiàng)目”指向的就是這類應(yīng)用場(chǎng)景。入門階段不需要深入每個(gè) IPC 機(jī)制的原理做個(gè)了解即可。真正需要花時(shí)間的是 C 語言和文件 I/O 基礎(chǔ)因?yàn)榍度胧?Linux 編程本質(zhì)還是在寫文件操作。先用普通文件讀寫練手再理解管道和共享內(nèi)存臺(tái)階會(huì)平緩很多。7.3 面試與認(rèn)證的準(zhǔn)備方向很多人的 Linux 學(xué)習(xí)目標(biāo)是找運(yùn)維、開發(fā)或測(cè)試崗位。熱詞里有“l(fā)inux面試題”和“l(fā)inux面試題測(cè)試”這提示了一個(gè)現(xiàn)實(shí)面試環(huán)節(jié)對(duì) Linux 的考察偏重實(shí)操和概念清晰度。常見的題目包括軟鏈接和硬鏈接的區(qū)別、絕對(duì)路徑與相對(duì)路徑、常見端口號(hào)、如何查看系統(tǒng)負(fù)載、磁盤滿了怎么排查、讓你簡述一次完整服務(wù)部署流程。我的備考建議很樸素把基礎(chǔ)命令背到滾瓜爛熟能把常用服務(wù)裝一遍能獨(dú)立完成按日志排查問題的演練就足以應(yīng)對(duì)大量初級(jí)崗位的 Linux 環(huán)節(jié)。不要背一堆冷門命令答案面試官更在意你的“排查思路”和“動(dòng)手能力”。簡歷上寫“熟悉 Linux”最好能拿出你實(shí)際部署過的項(xiàng)目、踩過坑的記錄這比什么都硬。另外如果想系統(tǒng)獲得認(rèn)可可以考一些認(rèn)證。雖然認(rèn)證的重要性因崗位而異但對(duì)零基礎(chǔ)轉(zhuǎn)行的人來說準(zhǔn)備過程本身就是特別好的知識(shí)梳理比較常見的是紅帽的 RHCSA 方向內(nèi)容涵蓋用戶、權(quán)限、存儲(chǔ)、網(wǎng)絡(luò)、服務(wù)管理等正好覆蓋這篇博文講到的大部分內(nèi)容。認(rèn)證不是終點(diǎn)但它能逼著你把基礎(chǔ)打扎實(shí)對(duì)后續(xù)發(fā)展很有幫助。我個(gè)人在教學(xué) Linux 時(shí)最大的體會(huì)是它不是一門“看會(huì)的學(xué)問”而是“練會(huì)的技能”。你可以讀完所有教程但只要不打開終端實(shí)際操作三周以后基本全忘。所以這篇入門必備最想傳達(dá)的不是哪幾條命令而是建議你從現(xiàn)在開始每天至少打開終端敲上二十分鐘把虛擬機(jī)當(dāng)玩具隨便折騰。裝壞了就重裝權(quán)限出錯(cuò)了就排查軟件沖突了就嘗試修復(fù)在這個(gè)過程里攢下來的經(jīng)驗(yàn)和手感比任何文章都珍貴。當(dāng)你有一天發(fā)現(xiàn)自己不再依賴搜索引擎也能用命令解決常見問題時(shí)Linux 基礎(chǔ)的大門就算真正踏進(jìn)去了。