Linux RHEL (Process, Services, Logs, SSH and Network)

2025-06-27

筆記 Red Hat Enterprise Linux (RHEL) 的基本 Process, Services, Logs, SSH and Network 管理

logo

Process

Process 可以 fork 出子 Process,子 Process 可以繼承父 Process 的環境變數。子 Process 可以使用 exec 來取代父 Process 的程式碼,子 Process exit 後會回到父 Process。

Process 有以下的狀態:

  • Running:正在執行中
  • Waiting:等待某個事件發生
  • Stopped:被暫停
  • Zombie:已經結束但仍然存在於 Process Table 中
  • Sleeping:等待某個事件發生,通常是 I/O 操作

Linux 的管理,經常使用 ps aux 來查看 Process 的狀態,意涵是:

  • ps:Process Status
  • a:顯示所有使用者的 Process
  • u:顯示使用者相關資訊
  • x:顯示沒有控制終端的 Process

ps -ef 則是另一種常用的格式,顯示所有 Process 的詳細資訊。

此外也常使用 top 來查看系統的資源使用情況,htop 則是 top 的增強版,提供更友善的介面和更多的功能。


Jobs 是指在 shell 中執行的 Process,可以使用 jobs 命令來查看當前的 Jobs。常用的操作包括:

  • bg:將 Job 從暫停狀態轉為在背景執行
  • fg:將 Job 從背景轉為在前景
  • kill:終止 Job

一個常用的技巧是使用 & 將命令放到背景執行,例如 command &,這樣可以在執行命令的同時繼續使用 Terminal。或者是可以透過鍵盤 Ctrl + Z 暫停當前的 Job,然後使用 bg 將其放到背景。


如果要刪除 Process,可以使用 kill 命令,後面接上 Process ID (PID)。如果要強制終止 Process,可以使用 kill -9 PID。常用的信號包括:

  • SIGTERM (15):正常終止 Process,這是預設的信號,但有時候會無法終止 Process
  • SIGKILL (9):強制終止 Process

killall 命令可以用來終止所有指定名稱的 Process,例如 killall firefox 會終止所有 Firefox 的 Process。

pkill 命令可以用來指定名稱以及其他條件來終止 Process,例如 pkill firefox -u username 會終止指定使用者的所有 Firefox Process。

pgrep 命令可以用來查找指定名稱的 Process,例如 pgrep firefox 會列出所有 Firefox 的 Process ID。

其他一些作業系統層的基本資訊,可以透過以下指令去查詢:

  • uptime:顯示系統運行時間、使用者數量、負載平均值等資訊
  • lscpu:列出 CPU 的資訊

Services

systemd 是 Linux 系統中用來管理系統服務的工具。

路徑 /etc/systemd/system/ 是用來存放自定義的服務單元檔案。這些檔案通常以 .service 為副檔名。

服務分成三種:

  • Service Unit:常駐服務,會在系統啟動時自動啟動,副檔名為 .service
  • Socket Unit:基於 Socket 的服務,會在有請求時啟動,副檔名為 .socket
  • Path Unit:基於檔案系統的服務,當指定的檔案或目錄發生變化時啟動,副檔名為 .path

要進行服務相關的管理,會透過 systemctl 命令來操作。

常用的 systemctl 命令包括:

  • systemctl start <service>:啟動服務
  • systemctl stop <service>:停止服務
  • systemctl restart <service>:重啟服務
  • systemctl reload <service>:重新載入服務設定
  • systemctl status <service>:查看服務狀態
  • systemctl enable <service>:設定服務在系統啟動時自動啟動
  • systemctl disable <service>:取消服務在系統啟動時自動啟動
  • systemctl list-units --type=service:列出所有服務單元
  • systemctl list-unit-files --type=service:列出所有服務單元檔案
  • systemctl list-dependencies <service>:列出服務的依賴關係

restartreload 的差異在於,restart 會停止服務並重新啟動,所以會有新的 Process ID,而 reload 則是重新載入服務的設定,不會改變 Process ID。


Process 是最基本的執行單位,所有 Job 和 Service 本質上都是 Process。
Job 是 Shell 管理的 Process,方便使用者在命令列下操作。
Service 是由系統 (如 systemd) 管理的長期背景 Process,通常不直接與使用者互動。

Logs