匿名
尚未登入
登入
頂極製作所
搜尋
檢視 緯育 2026-0415 的原始碼
出自頂極製作所
命名空間
頁面
討論
更多
更多
頁面操作
閱讀
檢視原始碼
歷史
←
緯育 2026-0415
由於下列原因,您沒有權限進行編輯此頁面的動作:
您請求的操作只有這個群組的使用者能使用:
管理員
您可以檢視並複製此頁面的原始碼。
<h3>Linux 系統管理:記憶體、程序與日誌</h3> <br> 本系列講座主要介紹 Linux 系統管理中的幾個核心概念與常用指令。內容涵蓋了記憶體管理,包括記憶體交換區(Swap)的原理、建立與監控,以及記憶體壓縮機制;接著深入探討程序管理,如調整執行優先權與工作控制;並詳細說明了 Linux 日誌(Log)系統的架構、查詢工具(如 journalctl)、輪替機制(logrotate)及其與 Windows 事件檢視器的比較。<br><br> 此外,講座也介紹了如何查詢遠端系統的基本資訊,例如作業系統版本、核心版本等,並比較了 Ubuntu 和 CentOS 在這些指令與輸出上的差異。 === 系統資訊查詢與效能監控 === * 查詢作業系統版本資訊 ** 遠端連線到新主機時,首要任務是確認其作業系統類型與版本,因為不同系統(如 CentOS、Ubuntu)存在差異。 ** cat /etc/os-release:查看作業系統發行版本資訊,此檔案在現代系統中普遍存在。 * 查詢核心版本 (Kernel Version) ** 核心版本與系統功能、驅動支援及安全性有關。 ** uname -a:顯示所有系統資訊,包含核心版本、主機名稱等。 ** 可透過 apt (Ubuntu) 或 yum/dnf (CentOS) 檢查並安裝更新的核心版本。 * 查詢 Systemd 版本 ** systemctl --version:查詢 systemd 的版本,有助於了解系統功能。 * 檢視系統運行時間與負載 ** append 指令(應為 uptime):查看系統開機時長、在線使用者數及系統負載平均值(Load Average)。 ** 負載平均值顯示過去1、5、15分鐘的平均負載,以CPU核心數為基準判斷負載強度。 * 檢視磁碟與記憶體使用狀況 ** df -h:以易讀格式檢視磁碟使用狀況。 ** free -h:以易讀格式檢視記憶體使用狀況。 === 記憶體管理 (Memory) === * 解讀 free -h 指令輸出 ** 判斷記憶體是否充足的關鍵指標是 available(真正可用的記憶體),而非 free(完全未被使用)。 ** 系統會盡量利用閒置記憶體作為 Buffer(緩衝區)和 Cache(快取),free 數值低是正常現象。 * 記憶體交換區 (Swap) ** 概念:當實體記憶體(RAM)不足時,系統會將部分資料暫移到硬碟的 Swap 空間,以維持系統運作,避免因記憶體耗盡而崩潰。這類似於 Windows 的虛擬記憶體。 ** 影響:頻繁使用 Swap 會導致系統效能顯著下降,因為硬碟讀寫速度遠慢於記憶體。健康的伺服器應盡量避免使用 Swap。 ** 大小設定:舊建議為實體記憶體的兩倍,現今因記憶體容量較大,建議設定適量(如 4GB)即可。 ** 建立方式:可透過建立獨立的硬碟分割區 (Partition)(速度快)或在檔案系統中建立檔案 (File)(設定方便)來新增 Swap 空間。 ** 透過檔案建立 Swap 步驟: 1. dd:建立指定大小的空檔案。 2. chmod 600:設定檔案權限。 3. mkswap:將檔案格式化為 Swap 格式。 4. swapon:立即啟用 Swap 空間。 5. 編輯 /etc/fstab:設定開機自動掛載。 * 記憶體壓縮機制 ** Apple 系統為了在較少實體記憶體下運作,記憶體是全部壓縮的。Microsoft 系統也有壓縮,但比例較小。 === 程序 (Process) 與工作 (Job) 管理 === * 系統程序 (Process) 管理 ** 系統中運行的服務就是程序,可對其進行查詢、停用、關閉或移除。 * 程序優先權 (Priority) ** 用於控制 CPU 執行程序的順序。拉高優先權可讓 CPU 分配更多時間給該程序,使其更快完成。 * 工作控制 (Job Control) ** 用於管理程序的執行狀態,可暫停、恢復前景或背景工作,讓 CPU 資源得到更有效的利用。 * 離線工作 (Nohup) ** 即使使用者登出終端機,也能讓系統繼續執行特定的工作。 === Linux 日誌 (Log) 系統 === * 日誌的作用 ** 記錄系統與服務的運作狀況,用於排查問題,如服務意外停止或重啟。 ** 用於稽查異常登入或大量的網路連線。 * 核心日誌服務 ** rsyslogd: 傳統的日誌服務,將日誌儲存在文字檔案中。 ** systemd-journald: systemd 內建的日誌服務,日誌可存於記憶體(重開機後消失)或永久儲存在硬碟。 ** 可修改 /etc/systemd/journald.conf 設定檔,將日誌永久儲存於 /var/log/journal/。 * 日誌儲存位置與結構 ** 日誌通常儲存在 /var/log/ 目錄下。 ** Linux 系統日誌 (syslog) 通常遵循標準四欄位格式:發生時間、主機名稱、來源 (服務/進程ID)、訊息內容。 ** 常見日誌檔:cron (排程任務)、dmesg (開機與硬體訊息)、secure.log/auth.log (登入驗證)。 * 日誌查詢工具 journalctl ** 用於查詢 systemd-journald 的日誌。 ** -u <服務名稱>:查詢特定服務的日誌,如 journalctl -u ssh.service。 ** -p <等級>:按嚴重性等級過濾,數字越小越緊急(p3 代表 error 等級)。 ** -k:僅顯示核心(kernel)相關的訊息。 * 日誌輪替 (Logrotate) ** 一個獨立服務,用於定期打包、壓縮和歸檔日誌檔案,防止單一檔案過大。 ** 主要設定檔在 /etc/logrotate.conf,各服務規則在 /etc/logrotate.d/。 === Windows 日誌管理 (事件檢視器) === * 基本結構 ** Windows 的日誌管理工具為「事件檢視器」,主要日誌分為「應用程式」、「安全性」、「系統」等類別。 * 與 Linux 的比較 ** Windows 日誌訊息更複雜,包含詳細的 XML 數據。 ** 由於許多第三方軟體未遵守規範,常將日誌寫入「系統」而非「應用程式」類別,導致訊息混雜,查找不如 Linux 直觀(Linux 將不同服務的日誌拆分成獨立檔案)。 * 查看建議 ** 優先關注標示為「錯誤」的事件。 ** 可在系統穩定時手動清除日誌,以便問題發生時快速定位新錯誤。 [[檔案:2026-0415-02.png|800px]] === 查詢硬體資訊 === * 使用 lshw 查詢所有硬體 ** 指令為 lshw (list hardware),可以列出主機上所有的硬體資訊。 ** 由於輸出內容非常長,建議搭配 | less 使用或輸出重新導向(> [檔案名])以便查看。 ** 輸出的資訊很全面,包括主機板、BIOS、CPU、記憶體、PCIe插槽等。 ** 在虛擬機環境下,會看到許多與VMware相關的虛擬硬體資訊。 * 使用 lscpu 查詢 CPU 詳細資訊 ** 指令為 lscpu,專門用來列出CPU的詳細資訊,如架構、型號、核心數、快取大小等。 ** 在半虛擬化環境下,lscpu會顯示實體主機(Host)的CPU資訊。 * 使用 lsmem 查詢記憶體資訊 ** 指令為 lsmem (list memory),用來顯示記憶體的佈局與狀態。 ** 可以推斷出記憶體的安裝方式與配置,輸出會模擬實體記憶體的樣貌。 * 其他硬體查詢指令 ** lsblk: 列出區塊儲存設備。 ** lsscsi: 列出SCSI介面的設備,主要用於伺服器。 ** lsusb: 列出USB設備。建議使用 lsusb -t 以樹狀結構顯示層級關係。 ** lspci: 列出所有PCI/PCIe匯流排上的設備,如顯示卡、網路卡。 === 主機名稱管理 === * 傳統方法 (hostname 指令與 /etc/hostname 檔案) ** 直接編輯 /etc/hostname 檔案,需重開機才能永久生效。 ** 使用 hostname [新名稱] 指令僅能暫時修改記憶體中的主機名稱,重開機後會失效。 ** 舊式永久修改方式需同時修改檔案並執行指令,以避免立即重開機。 * 現代方法 (hostnamectl 指令) ** hostnamectl 是 Systemd 時代的推薦工具,功能更強大。 ** 執行 hostnamectl 會列出靜態主機名稱(來自檔案)、暫態主機名稱(來自記憶體)等詳細資訊。 ** 使用 hostnamectl set-hostname [新名稱] 可同時修改設定檔和記憶體,實現永久性修改,無需重開機(僅需重新登入即可看到效果)。 === 使用者登入提示訊息 === * 登入前提示 (Login Prompt Banner) ** 在使用者輸入帳號密碼前顯示,透過修改 /etc/issue 檔案來設定。 ** 支援特殊逸出序列(escape sequences)來顯示動態資訊,例如 \\d (日期)、\\t (時間)。 * 登入後提示 (Message of the Day * MOTD) ** 在使用者成功登入後顯示,透過編輯 /etc/motd 檔案來設定(可能需自行建立)。 ** 只接受純文字,不支援逸出序列。 ** Ubuntu 系統有特有的動態 MOTD 機制,會執行腳本顯示系統狀態等資訊,若無網路可能導致登入延遲。 === 系統時間與時區管理 === * timedatectl 指令 ** 管理時間和時區的整合指令。 ** 執行 timedatectl 可顯示本地時間、UTC時間、RTC硬體時鐘時間、時區及NTP同步狀態。 * 修改時區與時間 ** 使用 timedatectl set-timezone [時區](如 Asia/Taipei)來設定時區。 ** 若要手動設定時間 (timedatectl set-time "YYYY-MM-DD HH:MM:SS"),必須先用 timedatectl set-ntp no 關閉NTP時間同步功能。 ** 設定完後可使用 timedatectl set-ntp yes 重新啟用時間同步。 * 時間同步服務 ** 系統中負責時間同步的服務稱為 systemd-timesync.d。時間同步對伺服器運作至關重要。 * 時間相關的歷史問題 ** 千禧蟲問題 (Y2K Bug):因早期年份只用兩位數記錄,導致跨世紀時系統誤判年份。 ** 2038年問題 (Y2K38 Problem):在32位元系統中,用來記錄時間的32位元有符號整數將在2038年溢位,導致時間錯亂。現代64位元系統無此問題。 === 名稱解析 (Name Resolution) === * 名稱解析的兩種方式 ** 網路DNS:設定檔為 /etc/resolv.conf,透過 nameserver 指定DNS伺服器IP。 ** 本機DNS:設定檔為 /etc/hosts,系統會優先查詢此檔案。 * 本機DNS (/etc/hosts) ** 是DNS服務出現前用來將主機名稱對應到IP位址的方法,格式為 [IP位址] [主機名稱]。 ** 安全性應用:可透過在 hosts 檔案中寫死重要服務的網址與IP對應關係,來防止DNS汙染攻擊(即外部惡意DNS伺服器回傳錯誤IP)。這是伺服器上簡單且有效的安全措施。 * 跨平台的hosts檔案 ** Windows(C:\Windows\System32\drivers\etc)、macOS及其他Unix-like系統中都存在此檔案,格式與功用相同。 === 命令提示字元 (PS1) === * 終端機中顯示的如 [user@hostname ~]$ 這樣的提示字串,由一個名為 PS1 的環境變數控制,其內容是可以客製化的。 [[檔案:2026-0415-03.png|800px]] === 程式與程序的基本概念 === * 程式 (Program) 與程序 (Process) 的定義 ** 程式 (Program):指儲存在硬碟或隨身碟中的一個實體檔案,是編譯後的可執行檔。如果不是可執行檔,則只是普通的文字檔。 ** 程序 (Process):是執行中的程式。當程式被執行並載入到記憶體後,系統會賦予其相關的權限和屬性,這時就成為一個程序。系統會給每個程序一個唯一的「程序編號」(Process ID, 簡稱 PID),用於記錄和識別該程序。 * 父程序 (Parent Process) 與子程序 (Child Process) ** 這是一個相對的概念。當一個程序(父程序)啟動了另一個程序(子程序)時,前者就是後者的父程序,後者是前者的子程序。 ** 範例:在一個終端機介面(父程序)中執行 ls 指令,那麼 ls 就是該終端機介面的子程序。 ** 在 top 或 ps 的輸出中,可以透過 PPID (Parent Process ID) 欄位來查看一個程序的父程序是誰。 === Windows 系統程序管理 === * 工作管理員 ** 透過在工作列按右鍵可開啟「工作管理員」,這是觀察系統程序的主要工具。 ** 「詳細資料」分頁會列出所有執行中的程序及其 PID、狀態、CPU 使用率、記憶體使用量等。 ** 使用者可以對程序按右鍵,選擇「結束工作」來終止程序,或「設定優先順序」來調整其執行優先級(如設為「即時」以獲得最高優先級)。 === Linux 系統程序監控與查詢 === * top 指令 (動態程序監控) ** top 是一個動態顯示系統程序的工具,介面會定時更新。 ** 主要介面說明: *** 摘要行: 顯示目前時間、開機時長、使用者數、系統平均負載。 *** 工作行: 顯示程序的總數及各種狀態(執行中、睡眠中等)。 *** CPU 狀態: 顯示 CPU 在使用者空間(us)、系統核心(sy)、閒置(id)等方面的使用百分比。 *** 記憶體狀態: 顯示實體記憶體(Mem)和交換空間(Swap)的使用情況。 *** 程序列表欄位: 顯示 PID、USER、優先權(PR/NI)、虛擬/實體記憶體(VIRT/RES)、狀態(S)、CPU/記憶體佔用率(%CPU/%MEM)、累計CPU時間(TIME+)和指令名稱(COMMAND)。 ** top 常用操作:k (終止程序)、u (依使用者篩選)、P (依CPU排序)、M (依記憶體排序)、N (依PID排序)、d (調整更新頻率)、F (管理欄位)、q (退出)。 * htop 指令 ** htop 是 top 的增強版,提供彩色介面,並支援滑鼠操作,功能更為直觀,但非所有系統預設安裝。 * ps 指令 (靜態程序快照) ** ps 指令用於顯示執行當下的系統程序靜態快照。 ** 常用組合:ps aux 是最常用的指令組合,可列出系統上所有使用者的所有程序。 *** a: 顯示所有終端機下的程序。 *** u: 以使用者為主的格式顯示。 *** x: 顯示沒有控制終端機的程序。 ** 輸出欄位: USER, PID, %CPU, VSZ (虛擬記憶體), RSS (真實記憶體), TTY (終端機), STAT (狀態), START (啟動時間), TIME (執行CPU時間), COMMAND。 ** ps -ef 是另一個功能類似的常用組合。 * pstree 指令 (行程樹狀結構) ** pstree 可以將系統中的行程以樹狀結構列出,清晰地展示父子關係。 ** 使用 pstree -p [PID] 可以單獨列出指定 PID 及其所有子行程的樹狀結構。 * fuser 指令 (查詢檔案使用者) ** fuser -u [檔案路徑] 可查詢某個檔案或目錄被哪個帳號開啟或執行。 * pidof 指令 (查詢程序的 PID) ** pidof [程式名稱] 用於查詢指定程式的所有實例 PID。可用於檢查某個服務是否仍在運行。 * lsof 指令 (列出已開啟的檔案) ** lsof (List Open Files) 可列出指定程序開啟了哪些檔案。 ** 常用法:lsof [目錄路徑] 查詢誰在使用該目錄下的檔案;lsof -u [使用者] 查詢特定使用者開啟的檔案。 * lslocks 指令 (查詢檔案鎖) ** lslocks (List System Locks) 可查看哪個程序鎖定了某個檔案,導致其無法被刪除或修改。 === Linux 程序管理 === * 程序優先級管理 (PRI 與 NI) ** PRI (Priority):核心分配給程序的優先級,數值越小,優先級越高,使用者無法直接修改。 ** NI (Nice):使用者可調整的值,用來影響 PRI。 ** 調整規則: *** 管理者 (root):可調整範圍為 -20 (最高優先級) 到 19 (最低優先級)。 *** 一般使用者:可調整範圍為 0 (預設) 到 19,只能將優先級調低(變得更慢)。 ** 調整指令: *** nice -n [NI值] [指令]: 在程序啟動前設定 NI 值。 *** renice -n [NI值] [PID]: 修改正在運行的程序的 NI 值。 ** 使用 ps -l 可查看程序的 PRI 和 NI 值。 * 終止程序 (kill 與 killall) ** kill [PID]: 向指定程序發送訊號。 *** 正常終止 (訊號 15):預設行為 (kill [PID]),通知程序自行關閉,允許存檔等清理工作。 *** 強制終止 (訊號 9):使用 kill -9 [PID],直接從記憶體移除程序,可能導致資料損毀,僅在正常終止無效時使用。 ** killall [程序名] 或 killall -u [使用者名稱]: 批量終止同名程序或指定用戶的所有程序,同樣支持 -9 和 -15 選項。 * 背景執行 ** 在指令後加上 & 符號(如 sleep 300 &)可讓程序在背景執行,不佔用當前終端。 === 其他相關指令 === * 指令執行時間測量 (time) ** time [command] 用來測量指令執行所消耗的時間。 ** 輸出分析: *** real: 使用者感受到的「體感時間」或「牆上時鐘時間」。 *** user: CPU 在「使用者空間」處理該指令所花費的時間。 *** sys: CPU 在「核心空間」為執行該指令所花費的時間。 *** 通常 real → (user + sys),因為 real 包含了等待 I/O 等非 CPU 計算時間。 * 指令歷史記錄管理 (history) ** history: 顯示用戶曾輸入的指令列表。 ** ']: 可用來重複執行歷史指令。 ** 安全注意:若指令中包含密碼等敏感資訊,應使用 history -d [行號] 或 history -c 清除特定記錄或所有記錄,以防外洩。 [[檔案:2026-0415-04.png|800px]]
返回到「
緯育 2026-0415
」。
* [[檔案:2000-Dragon-30.png|15px]] [[附近走走]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[應用程式]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[郵遞區號]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[作品紀錄]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[攝影相簿]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[網路書籤]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[網路照片]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[星艦日誌]]<br> * [[檔案:2000-Dragon-30.png|15px]] [[Privacy_Policy|隱私政策]]<br>
附近走走
應用程式
郵遞區號
作品紀錄
攝影相簿
網路書籤
網路照片
星艦日誌
隱私政策
首頁
wiki工具
wiki工具
特殊頁面
頁面工具
頁面工具
使用者頁面工具
更多
連結至此的頁面
相關變更
頁面資訊
頁面日誌