戰(zhàn)指南:從入門(mén)到系統(tǒng)救急)
上次幫同事救一臺(tái)連桌面都進(jìn)不去的Ubuntu服務(wù)器遠(yuǎn)程敲了半小時(shí)命令就把系統(tǒng)盤(pán)數(shù)據(jù)撈了回來(lái)。對(duì)方在電話里感嘆了一句“原來(lái)命令行才是這系統(tǒng)的靈魂啊?!边@話我特別認(rèn)同。很多人裝完Ubuntu就一直在圖形界面里點(diǎn)來(lái)點(diǎn)去遇到鼠標(biāo)失效、輸入法罷工、源報(bào)404這種破事就徹底抓瞎。其實(shí)Ubuntu的很多日常操作用命令處理反而更快、更穩(wěn)、更可控。這篇指南就是照著“從入門(mén)到精通”的路線寫(xiě)的意義很簡(jiǎn)單把命令當(dāng)成你操控Ubuntu的手不是背字典。內(nèi)容覆蓋裝機(jī)、用戶管理、文件操作、網(wǎng)絡(luò)配置、環(huán)境變量、GPU驅(qū)動(dòng)、Docker乃至系統(tǒng)救急全部以命令為主線串起來(lái)每一條都附上我實(shí)測(cè)過(guò)的使用場(chǎng)景和翻車教訓(xùn)。適合剛接觸Ubuntu的新手也適合裝完雙系統(tǒng)或虛擬機(jī)后想老老實(shí)實(shí)把命令補(bǔ)起來(lái)的玩家。1. 為什么要系統(tǒng)學(xué)Ubuntu命令從一次差點(diǎn)“刪庫(kù)”的教訓(xùn)說(shuō)起1.1 命令行的核心優(yōu)勢(shì)不是“炫”而是可控可復(fù)用先講個(gè)我自己的翻車經(jīng)歷。早年間剛用Ubuntu的時(shí)候圖形界面里刪軟件右鍵刪除完以為就干凈了后來(lái)發(fā)現(xiàn)磁盤(pán)越用越滿連系統(tǒng)更新都失敗。查了一圈才知道圖形卸載并不會(huì)清理遺留的配置文件、緩存和依賴。人肉刪文件更是災(zāi)難有一次在home目錄里隨手rm -rf一個(gè)文件夾把整個(gè)用戶的配置目錄連窩端了桌面直接白屏折騰了一整天才恢復(fù)。命令行之所以值得系統(tǒng)學(xué)不是因?yàn)樗雌饋?lái)像黑客電影而是它給了你兩樣圖形界面給不了的東西可控性每條命令做了什么、輸出什么一目了然出錯(cuò)也知道錯(cuò)在哪一步。可重復(fù)性同樣一串命令這次能跑通下次、換臺(tái)機(jī)器、過(guò)半年再跑結(jié)果一樣。圖形界面點(diǎn)出來(lái)的操作復(fù)現(xiàn)路徑跟運(yùn)氣有關(guān)。我后來(lái)養(yǎng)成的習(xí)慣是凡是需要做兩次以上的操作全部寫(xiě)成命令甚至Shell腳本。比如重裝系統(tǒng)后要裝的那批軟件一條apt install命令帶一長(zhǎng)串包名搞定比逐個(gè)軟件商店點(diǎn)安裝省下大量時(shí)間。1.2 命令結(jié)構(gòu)沒(méi)你想的那么難拆開(kāi)就三部分很多人一看到一大串命令就頭大其實(shí)所有命令的骨架都一樣命令名 選項(xiàng) 參數(shù)。以最常用的為例ls -la /home/userls是命令名表示列出目錄內(nèi)容-la是選項(xiàng)-l表示長(zhǎng)格式輸出-a表示顯示隱藏文件/home/user是參數(shù)告訴命令操作哪個(gè)對(duì)象。學(xué)習(xí)時(shí)不需要背幾百個(gè)命令抓住高頻核心的那二三十個(gè)配合兩個(gè)自學(xué)命令就足夠撐起日常man ls # 查看ls的完整手冊(cè) ls --help # 快速查看用法摘要實(shí)操建議遇到不懂的命令不要慌先跑--help它是命令作者寫(xiě)給使用者的速查卡比在網(wǎng)上翻教程快得多。需要深入理解某個(gè)命令的全部細(xì)節(jié)再翻man手冊(cè)。這是命令行世界的基本生存技能。1.3 入門(mén)第一課裝完系統(tǒng)后先跑這幾條命令如果你剛裝好Ubuntu不管是在真機(jī)、虛擬機(jī)還是WSL里我建議先敲一遍下面這組命令它們會(huì)告訴你這臺(tái)機(jī)器的基本家底whoami # 當(dāng)前登錄用戶 pwd # 當(dāng)前所在目錄 uname -a # 內(nèi)核版本和系統(tǒng)架構(gòu) lsb_release -a # Ubuntu發(fā)行版版本號(hào) free -h # 內(nèi)存使用情況 df -h # 磁盤(pán)分區(qū)及剩余空間我剛開(kāi)始用的時(shí)候覺(jué)得這些命令“沒(méi)什么用”后來(lái)才發(fā)現(xiàn)它們是排查問(wèn)題的起點(diǎn)。比如lsb_release -a能立刻確認(rèn)你裝的是24.04 LTS還是22.04很多軟件源、教程都區(qū)分版本先用它自報(bào)家門(mén)可以避開(kāi)一堆版本不匹配的坑。free -h和df -h則能快速判斷系統(tǒng)卡頓到底是內(nèi)存爆了還是磁盤(pán)滿了省下在圖形界面里翻半天的工夫。2. 裝機(jī)與源配置從ISO到軟件源不報(bào)404的核心命令2.1 制作啟動(dòng)盤(pán)和校驗(yàn)鏡像的實(shí)操命令安裝Ubuntu本身不難但很多人倒在了第一步——制作啟動(dòng)盤(pán)時(shí)圖省事直接拷貝ISO文件到U盤(pán)結(jié)果引導(dǎo)不了。正確姿勢(shì)是用工具寫(xiě)入比如Linux下直接用dd命令sudo dd ifubuntu-24.04-desktop-amd64.iso of/dev/sdb bs4M statusprogressif指定輸入文件也就是ISO鏡像of指定輸出設(shè)備這里是U盤(pán)設(shè)備文件注意是/dev/sdb而不是/dev/sdb1后者是分區(qū)不是整個(gè)設(shè)備bs4M表示每次讀寫(xiě)4MB加快速度statusprogress會(huì)顯示寫(xiě)入進(jìn)度。這條命令破壞性極強(qiáng)of寫(xiě)錯(cuò)設(shè)備會(huì)把整塊磁盤(pán)干廢。執(zhí)行前務(wù)必用lsblk確認(rèn)U盤(pán)對(duì)應(yīng)的設(shè)備名。我每次都會(huì)在寫(xiě)盤(pán)前跑一遍lsblk核對(duì)容量和掛載點(diǎn)才放心。更穩(wěn)妥的做法是用官方推薦的balenaEtcher之類的寫(xiě)盤(pán)工具圖形界面選鏡像、選U盤(pán)、點(diǎn)寫(xiě)入邏輯和dd一樣但直觀很多。寫(xiě)完盤(pán)后強(qiáng)烈建議校驗(yàn)一遍鏡像完整性echo SHA256校驗(yàn)值 ubuntu-24.04-desktop-amd64.iso | sha256sum -c校驗(yàn)值在Ubuntu官網(wǎng)下載頁(yè)面旁邊就能找到鏡像在下載過(guò)程中損壞的情況其實(shí)比想象中常見(jiàn)不校驗(yàn)直接安裝翻車概率會(huì)高不少。2.2 apt源配置404問(wèn)題的根源與修復(fù)方式熱搜詞里出現(xiàn)“ubuntu更新源404問(wèn)題處理”這基本是每個(gè)新手都會(huì)撞上的墻。這里先講根源Ubuntu的軟件源地址寫(xiě)死在/etc/apt/sources.list以及/etc/apt/sources.list.d/目錄下的文件里。如果你的源指向的路徑在服務(wù)器上已經(jīng)不存在比如Ubuntu版本升級(jí)后舊源被清理或者你用了某個(gè)第三方PPA而它停止維護(hù)apt update就會(huì)給你報(bào)一串404。常用的官方源在服務(wù)器上其實(shí)是有固定路徑結(jié)構(gòu)的比如http://archive.ubuntu.com/ubuntu/里面的目錄按發(fā)行版代號(hào)組織noble對(duì)應(yīng)24.04jammy對(duì)應(yīng)22.04。如果你系統(tǒng)版本從22.04升級(jí)到24.04但源文件里還寫(xiě)著一堆jammy自然就404。修復(fù)方法很簡(jiǎn)單打開(kāi)源文件看路徑cat /etc/apt/sources.list看到j(luò)ammy但系統(tǒng)其實(shí)已經(jīng)升到24.04就需要把代號(hào)改掉。更省事的方案是直接用發(fā)行版自帶的“軟件更新器”里的“設(shè)置”界面選鏡像源或者手動(dòng)把源文件整體替換為當(dāng)前版本的官方路徑。在中國(guó)大陸網(wǎng)絡(luò)環(huán)境下我一般建議把源切成清華或阿里云的鏡像速度快且穩(wěn)定。手動(dòng)替換核心命令是這樣sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list這里用到了sed做批量文本替換把a(bǔ)rchive.ubuntu.com換成阿里云鏡像域名這就是命令行的魅力——一條正則表達(dá)式解決圖形界面里需要手動(dòng)改幾十行文本的苦差事。改完記得sudo apt update只有apt update不報(bào)錯(cuò)后面裝軟件才能順利。2.3 中文輸入法fcitx5安裝與切換命令中文輸入法也是高頻熱搜詞。我給Ubuntu裝中文輸入法現(xiàn)在一律推薦fcitx5框架它比老舊的ibus在中文場(chǎng)景下順手得多。安裝命令sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-config-qt安裝完成后不急著重啟先設(shè)置環(huán)境變量讓系統(tǒng)默認(rèn)走fcitx5im-config -n fcitx5然后注銷重新登錄在fcitx5配置界面里添加拼音輸入法。這一步我踩過(guò)坑——裝完輸入法如果不執(zhí)行im-config -n fcitx5系統(tǒng)還是走ibus裝了個(gè)寂寞。命令行在這里的價(jià)值就是明確告訴你“當(dāng)前輸入法框架是哪一套”排查問(wèn)題時(shí)有據(jù)可循。如果偏好搜狗輸入法官方對(duì)Ubuntu 24.04的支持目前不算順滑我反而建議用fcitx5配系統(tǒng)自帶的拼音詞庫(kù)和流暢度已經(jīng)足夠日常使用。2.4 gnome-software與apt的關(guān)系軟件從哪來(lái)熱搜詞里有“ubuntu微信”“ubuntu安裝”等新手最容易犯的錯(cuò)是在網(wǎng)上隨便下個(gè).deb雙擊安裝然后發(fā)現(xiàn)依賴缺失一堆鐵銹。這里先理清關(guān)系Ubuntu圖形界面的“軟件商店”GNOME Software后端其實(shí)也是apt只是幫你在前臺(tái)封裝了一層。安裝微信這類國(guó)內(nèi)軟件時(shí)我建議從官網(wǎng)下載對(duì)應(yīng)的.deb包然后用sudo apt install ./wechat.deb注意./前綴它能明確告訴apt“這是本地文件但從依賴倉(cāng)庫(kù)里解析依賴關(guān)系”比雙擊安裝可靠得多。如果提示依賴不滿足先跑sudo apt --fix-broken install修一遍再裝目標(biāo)包。3. 文件、權(quán)限與進(jìn)程管理日常高頻命令的組合打法3.1 查找與批量操作find grep xargs的黃金組合文件操作是命令行的基本功。很多人在圖形界面的文件管理器里找一個(gè)文件不難但想“在所有文檔里搜索包含某個(gè)關(guān)鍵詞的文件”就傻眼了。命令行一行搞定grep -rn 目標(biāo)關(guān)鍵詞 ~/Documents/-r表示遞歸搜索子目錄-n顯示行號(hào)。另一個(gè)高頻場(chǎng)景是“我忘了文件放哪了”用findfind ~ -name *.pdf -mtime -7表示在home目錄下找最近7天內(nèi)修改過(guò)的PDF文件。這里-name按文件名匹配-mtime -7按修改時(shí)間過(guò)濾兩個(gè)條件配合起來(lái)很實(shí)用。批量操作場(chǎng)景更顯示命令行的威力。比如要把某個(gè)目錄下所有.tmp后綴的臨時(shí)文件刪除find /tmp/cleanup -name *.tmp -exec rm -v {} \;-exec后面跟要執(zhí)行的命令和{}占位符\;表示命令結(jié)束。新手容易漏掉最后那個(gè)反斜杠分號(hào)導(dǎo)致報(bào)錯(cuò)我當(dāng)年栽過(guò)一次。如果文件名里帶空格建議換成-delete參數(shù)find /tmp/cleanup -name *.tmp -delete3.2 權(quán)限模型rwx數(shù)字法一眼看懂Ubuntu的權(quán)限模型是“用戶-用戶組-其他”三段式每段用rwx表示讀、寫(xiě)、執(zhí)行。ls -l輸出的第一列像這樣-rwxr-xr-- 1 user group 1024 Jan 10 10:00 script.sh拆解一下第一個(gè)字符-表示普通文件目錄是d然后每三個(gè)字符為一組分別是“屬主權(quán)限r(nóng)wx”“屬組權(quán)限r(nóng)-x”“其他人權(quán)限r(nóng)--”。數(shù)字法是對(duì)應(yīng)的二進(jìn)制轉(zhuǎn)換r4、w2、x1三者相加。所以755表示屬主rwx4217屬組r-x4015其他r-x。修改權(quán)限和屬主是兩條高頻命令chmod 755 script.sh # 給腳本添加執(zhí)行權(quán)限 chown user:group file.txt # 修改文件屬主和屬組我經(jīng)常見(jiàn)到有人把腳本權(quán)限設(shè)成777所有人可讀寫(xiě)執(zhí)行這在單機(jī)自用沒(méi)問(wèn)題但在服務(wù)器上就是個(gè)風(fēng)險(xiǎn)點(diǎn)。理想做法是755需要寫(xiě)權(quán)限的目錄用775即可。理解這個(gè)模型比背幾條命令更有價(jià)值很多“明明有權(quán)限卻操作不了”的問(wèn)題都是組權(quán)限沒(méi)給對(duì)。3.3 進(jìn)程管理top、ps、kill與systemctl的分工系統(tǒng)卡了怎么辦第一反應(yīng)不是重啟而是抓出“吃CPU”的元兇。兩個(gè)命令配合使用top # 實(shí)時(shí)查看進(jìn)程資源占用按q退出 ps aux # 靜態(tài)列出所有進(jìn)程top界面里按P按CPU排序按M按內(nèi)存排序看到異常進(jìn)程記下PID進(jìn)程號(hào)然后處理它kill -9 1234 # 強(qiáng)制結(jié)束PID 1234的進(jìn)程 pkill -f chrome # 按進(jìn)程名匹配并結(jié)束kill -9是最后手段它不讓進(jìn)程做任何清理直接干掉可能導(dǎo)致數(shù)據(jù)丟失。日常先用kill 1234發(fā)正常終止信號(hào)等幾秒沒(méi)反應(yīng)再上-9。這個(gè)習(xí)慣幫我避免過(guò)不少文件損壞。管理系統(tǒng)服務(wù)則是另一套命令因?yàn)閁buntu采用systemd作為初始化系統(tǒng)systemctl status ssh # 查看SSH服務(wù)狀態(tài) systemctl restart ssh # 重啟SSH服務(wù) systemctl enable ssh # 設(shè)置開(kāi)機(jī)自啟 systemctl disable ssh # 取消開(kāi)機(jī)自啟3.4 網(wǎng)絡(luò)排查五連ip、ss、ping、curl、traceroute網(wǎng)絡(luò)故障排查有一套固定的命令鏈路我每次都是按這個(gè)順序來(lái)ip addr # 先看網(wǎng)卡有沒(méi)有IP地址 ping -c 4 網(wǎng)關(guān)IP # 再測(cè)局域網(wǎng)通不通 curl -I https://example.com # 然后測(cè)外網(wǎng)可達(dá)性IP都沒(méi)有問(wèn)題大概率在DHCP或網(wǎng)卡驅(qū)動(dòng)IP正常但ping不通網(wǎng)關(guān)可能網(wǎng)線或交換機(jī)的問(wèn)題網(wǎng)關(guān)通了但外網(wǎng)不通再看路由表ip route和DNS配置。ss命令用來(lái)查看端口監(jiān)聽(tīng)狀態(tài)比如檢查某個(gè)服務(wù)有沒(méi)有起作用ss -tlnp | grep 22這條會(huì)顯示當(dāng)前監(jiān)聽(tīng)22端口的進(jìn)程SSH連不上排查時(shí)先跑它比盲目重啟服務(wù)高效得多。4. 環(huán)境變量與Shell腳本從“敲命令”到“寫(xiě)命令”4.1 環(huán)境變量配置錯(cuò)誤的救急方案熱搜詞里有“ubuntu環(huán)境變量配置錯(cuò)誤”這個(gè)坑我深有體會(huì)。環(huán)境變量文件分為系統(tǒng)級(jí)/etc/environment、/etc/profile和用戶級(jí)~/.bashrc、~/.profile。絕大多數(shù)教程建議把export PATH...寫(xiě)在~/.bashrc里這是對(duì)的但一旦寫(xiě)錯(cuò)——比如漏了原有的$PATH把PATH覆蓋成了殘缺內(nèi)容——新開(kāi)的終端會(huì)連ls、sudo都提示“command not found”。遇到這種局面我的第一反應(yīng)是“冷靜不要關(guān)當(dāng)前終端”因?yàn)楫?dāng)前會(huì)話的PATH可能還正常。然后立即用絕對(duì)路徑調(diào)用命令/usr/bin/export PATH/usr/bin:/bin:/usr/sbin:/sbin先恢復(fù)出能用的PATH再vim ~/.bashrc把寫(xiě)錯(cuò)的行刪掉或改對(duì)。如果所有終端都被鎖死了也沒(méi)關(guān)系重啟機(jī)器后系統(tǒng)會(huì)重置環(huán)境登錄后立即修改~/.bashrc即可。這里有個(gè)關(guān)鍵認(rèn)知PATH是“可執(zhí)行文件的搜索路徑”多個(gè)路徑用冒號(hào)分隔新增路徑時(shí)要保留原有的比如export PATH$PATH:$HOME/bin4.2 用uname和arch確認(rèn)系統(tǒng)架構(gòu)避免裝錯(cuò)軟件包“ubuntu查看系統(tǒng)架構(gòu)”這個(gè)熱搜詞提醒我很多人安裝軟件失敗根源就是下載了錯(cuò)誤架構(gòu)的包。Ubuntu常見(jiàn)架構(gòu)是amd64Intel/AMD 64位、arm64ARM處理器和i386老舊的32位。查看當(dāng)前架構(gòu)用uname -m arch dpkg --print-architectureuname -m輸出x86_64表示amd64架構(gòu)aarch64表示arm64。下載.deb包或配置docker鏡像時(shí)一定要先跑這條命令確認(rèn)架構(gòu)。我遇到過(guò)朋友在樹(shù)莓派ARM架構(gòu)上裝amd64的軟件包編譯到一半直接報(bào)“Illegal instruction”就是架構(gòu)不匹配。4.3 顯卡驅(qū)動(dòng)查看與安裝從nvidia-smi到卸載不干凈的修復(fù)熱搜詞里“ubuntu查看顯卡驅(qū)動(dòng)”“ubuntu安裝nvidia顯卡驅(qū)動(dòng)”“ubuntu顯卡驅(qū)動(dòng)卸載不掉”出現(xiàn)頻率很高。查看當(dāng)前是否已有NVIDIA驅(qū)動(dòng)nvidia-smi如果提示找不到命令說(shuō)明驅(qū)動(dòng)沒(méi)裝或沒(méi)進(jìn)PATH。推薦直接用系統(tǒng)自帶的驅(qū)動(dòng)管理工具ubuntu-drivers devices它會(huì)列出當(dāng)前顯卡可用的驅(qū)動(dòng)版本然后一鍵安裝推薦版本sudo ubuntu-drivers autoinstall這里我特別強(qiáng)調(diào)一個(gè)避坑點(diǎn)NVIDIA驅(qū)動(dòng)安裝后如果卸載不干凈往往是因?yàn)槭謩?dòng)安裝了官方.run包又沒(méi)加--uninstall參數(shù)。處理思路是進(jìn)recovery模式先卸載所有NVIDIA相關(guān)包sudo apt purge nvidia-driver-* nvidia-*再清理無(wú)用內(nèi)核模塊sudo apt autoremove如果你用的是.run包還要執(zhí)行sudo nvidia-uninstall。文本模式下操作時(shí)注意先禁用圖形界面服務(wù)否則會(huì)報(bào)“X server正在運(yùn)行”。一般切換到文本終端CtrlAltF3就能繼續(xù)。這些細(xì)節(jié)官網(wǎng)文檔不會(huì)細(xì)講但實(shí)際踩坑十次有九次栽在這。4.4 Docker安裝與常用命令docker run只是冰山一角“ubuntu安裝docker”也是不少人搜過(guò)的點(diǎn)。官方推薦的安裝方式是用Docker提供的腳本curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh安裝完成后重點(diǎn)處理的是權(quán)限問(wèn)題默認(rèn)情況下普通用戶執(zhí)行docker命令會(huì)提示權(quán)限不足。把當(dāng)前用戶加入docker組sudo usermod -aG docker $USER然后注銷重新登錄生效之后就能直接docker ps了。注意docker組權(quán)限等價(jià)于root只在可信用戶上添加別為圖省事把sudo拿去喂所有命令。日常高頻命令docker ps # 查看運(yùn)行中的容器 docker ps -a # 查看所有容器含退出狀態(tài) docker images # 查看本地鏡像列表 docker pull ubuntu:24.04 # 拉取官方鏡像 docker run -it ubuntu:24.04 /bin/bash # 交互式運(yùn)行容器 docker rm 容器ID # 刪除容器 docker rmi 鏡像ID # 刪除鏡像4.5 Shell腳本基礎(chǔ)循環(huán)、管道與定時(shí)任務(wù)能從“敲命令”跨到“寫(xiě)命令”才算真正入門(mén)了。Shell腳本不難核心就是把你手工敲的命令按邏輯串起來(lái)。我舉一個(gè)真實(shí)的日常場(chǎng)景需要把~/photos目錄下所有.jpg文件按月份歸檔。先寫(xiě)一個(gè)循環(huán)for photo in ~/photos/*.jpg; do month$(stat -c %y $photo | cut -d- -f1-2) mkdir -p ~/photos/$month mv $photo ~/photos/$month/ donestat -c %y取文件修改時(shí)間cut截取月份mkdir -p自動(dòng)建目錄mv搬家。三行命令解決圖形界面里要手動(dòng)挑半天的問(wèn)題。把這些保存為organize.sh加執(zhí)行權(quán)限后就能反復(fù)用了。定時(shí)任務(wù)用cron實(shí)現(xiàn)。編輯當(dāng)前用戶的定時(shí)任務(wù)crontab -e比如每天凌晨2點(diǎn)備份某目錄0 2 * * * tar -czf /backup/home_$(date \%Y\%m\%d).tar.gz /home/user/Documents注意date命令里的%在cron中需要轉(zhuǎn)義寫(xiě)\%否則cron會(huì)報(bào)錯(cuò)。這個(gè)細(xì)節(jié)是我親眼看著同事在crontab里踩過(guò)去的。5. 高頻救急場(chǎng)景照著命令鏈路走別上來(lái)就重裝5.1 忘記登錄密碼的恢復(fù)思路“ubuntu忘記登錄密碼”幾乎是每個(gè)人都會(huì)不小心觸發(fā)一次的場(chǎng)景。方法不復(fù)雜重啟機(jī)器開(kāi)機(jī)在GRUB菜單時(shí)快速按e進(jìn)入編輯模式找到以linux開(kāi)頭的那一行在行尾加上init/bin/bash然后按CtrlX啟動(dòng)系統(tǒng)會(huì)直接進(jìn)入root shell而不是正常登錄界面。接著重新掛載根分區(qū)為可寫(xiě)狀態(tài)mount -o remount,rw / passwd 用戶名設(shè)置完新密碼后重啟即可。這里的關(guān)鍵就是init/bin/bash這一招它告訴你“系統(tǒng)可以被命令行完全接管”遇到圖形界面進(jìn)不去的情況不要重裝先用這個(gè)思路救系統(tǒng)。5.2 SSH無(wú)法連接先看服務(wù)、端口、防火墻SSH連不上我建議按這個(gè)鏈路排查不要盲目重裝openssh-serversystemctl status sshd ip addr ss -tlnp | grep 22 sudo ufw status第一行確認(rèn)服務(wù)是否在運(yùn)行第二行看IP是否配好第三行確認(rèn)22端口有沒(méi)有被監(jiān)聽(tīng)第四行看防火墻有沒(méi)有放行。我這幾年幫人排查下來(lái)大部分SSH連不上都是防火墻或服務(wù)沒(méi)啟極少是配置文件的鍋。如果ss命令看不到22端口先啟動(dòng)服務(wù)并設(shè)開(kāi)機(jī)自啟sudo systemctl enable --now ssh5.3 apt安裝軟件失敗依賴損壞的統(tǒng)一修復(fù)“ubuntu安裝gcc失敗”這類問(wèn)題其實(shí)絕大多數(shù)不是gcc本身的問(wèn)題而是apt數(shù)據(jù)庫(kù)里積壓了未完成的安裝、卸載或殘缺的依賴。統(tǒng)一的修復(fù)鏈路是sudo apt --fix-broken install sudo dpkg --configure -a sudo apt update sudo apt upgradedpkg --configure -a會(huì)把之前中斷的包配置全部完成--fix-broken修正依賴關(guān)系。如果提示“無(wú)法獲取鎖”說(shuō)明后臺(tái)還有apt進(jìn)程在跑用ps aux | grep apt找到PID后kill掉或者直接等它跑完。5.4 日志分析法journalctl是一種心態(tài)最后分享一個(gè)我用了多年才養(yǎng)成的習(xí)慣系統(tǒng)出問(wèn)題第一反應(yīng)不是網(wǎng)上搜“Ubuntu xxx問(wèn)題”而是先看日志。systemd把所有日志集中管理查所有日志journalctl -xe最后幾百行里往往直接寫(xiě)著錯(cuò)誤原因比如“無(wú)法解析域名”“磁盤(pán)空間不足”“權(quán)限被拒絕”。有日志在手再配合一句搜索引擎關(guān)鍵詞你搜到的答案才精準(zhǔn)。很多人問(wèn)題解決不了是因?yàn)檫B報(bào)錯(cuò)信息都沒(méi)看過(guò)只憑模糊的記憶在問(wèn)問(wèn)題。6. 把命令串成自己的工具箱alias與配置文件推薦6.1 我常用的alias配置命令行用得越久越會(huì)嫌棄重復(fù)的輸入。~/.bashrc里加幾個(gè)alias能大幅提升效率。我自己的配置里有這幾條貼出來(lái)供參考alias updatesudo apt update sudo apt upgrade alias installsudo apt install alias removesudo apt remove alias cleansudo apt autoremove sudo apt autoclean alias myipcurl -s ifconfig.me alias llls -alF alias lals -A alias portsss -tlnp設(shè)置完后執(zhí)行source ~/.bashrc讓配置立即生效。養(yǎng)成“高頻命令縮寫(xiě)化”的習(xí)慣后日常操作的效率提升是肉眼可見(jiàn)的。需要查看當(dāng)前所有alias就敲alias想臨時(shí)繞過(guò)某個(gè)alias可以在命令前加反斜杠比如\ls會(huì)執(zhí)行原始命令。6.2 用history復(fù)盤(pán)你的命令行成長(zhǎng)history命令會(huì)列出當(dāng)前用戶執(zhí)行過(guò)的歷史命令配合grep可以快速找回之前用過(guò)但忘記的命令history | grep docker想重復(fù)執(zhí)行歷史里的某條命令輸入!n替換成對(duì)應(yīng)序號(hào)即可。bash默認(rèn)保存最近1000條歷史歷史文件在~/.bash_history。我偶爾會(huì)翻一下自己的history看看哪些命令反復(fù)敲觸發(fā)去寫(xiě)alias或腳本的念頭——這正是從“入門(mén)”往“精通”走的自然路徑。6.3 從命令到工具鏈Ubuntu管理員的一天把上面所有內(nèi)容串起來(lái)其實(shí)就是管理員日常工作流的縮影。早上到公司先journalctl -xe快速掃一眼夜里有沒(méi)有服務(wù)崩過(guò)df -h確認(rèn)磁盤(pán)沒(méi)滿uptime看看負(fù)載用apt update確認(rèn)軟件源可用。下班前把關(guān)鍵目錄打包備份寫(xiě)進(jìn)cron定時(shí)任務(wù)。這套流程完全不需要打開(kāi)圖形界面在服務(wù)器上更是唯一選擇。命令行不是門(mén)檻而是從“Ubuntu用戶”走向“Ubuntu管理員”最快的橋梁它讓你真正聽(tīng)懂系統(tǒng)在說(shuō)什么也讓所有操作變得可以被記錄、被復(fù)現(xiàn)、被分享。我至今碼農(nóng)生涯里最高興的瞬間之一就是第一次用五條命令遠(yuǎn)程幫同事救回一臺(tái)系統(tǒng)——那一刻我才意識(shí)到前面繞過(guò)的每一個(gè)坑積累的每一條命令都值得。