Skip to content

antony@notes:~/suse$ cat "Process-Management.md"

Process Management

2023-04-01· suse ·SUSE Linux Enterprise Server

Process Management

:::warning

:::spoiler 目錄

[TOC]

:::

Understand Process Administration

Processes Basics

  • Terminology:
    • Program: Executable code, stored on a drive
    • Process: Executable code, copied into RAM for execution
    • Task: Synonym for process
  • Basic process types:
    • User: Associated with a controlling terminal
    • Daemon: Not associated with a controlling terminal
    • Every process is assigned a unique Process ID (PID)
  • Processes can spawn other processes (parent/childrelationship)

當可執行的代碼存儲在磁碟上時,稱為「程式」。

當可執行代碼被複製到 RAM 中執行時,它通常不再稱為程式,而是稱為「Process (程序)」。存儲時是程式;執行時是程序。

在 Linux 中,程序與它們所啟動的程式代碼並沒有直接關聯。程式代碼可以從磁碟中移除,但程序仍會繼續執行,即使可執行代碼不再位於磁碟上。

在 Kernel developers (內核開發社群)中,程序稱為「Task (任務)」。任務和程序是同義詞,並且通常與不同的觀點有關。

使用者程序是由使用者啟動,從終端機或圖形化環境中啟動。

一個 Daemon Process (背景程序) 是一個系統程序,不與終端或圖形環境相關。

  • 它是一個程序或程序的集合,等待一個事件來觸發程序方面的行動。
  • 在基於網絡的服務中,這個事件通常是一個網絡連接。
  • 其他的服務,如cronatd,是基於時間的,在某些時間點上執行某些任務。

當使用者從 text console (文本控制台) 登錄後,會啟動一個 Shell ,讓他們手動啟動程序(使用者程序)。

在圖形化環境中,使用者可以從終端視窗中打開,以啟動使用者程序。他們還可以通過點擊圖標或在菜單中選擇快捷方式來啟動程序。

Process ID: 分配給每個程序的唯一標識符號。

子程序:由另一個程序(父程序)啟動的程序。 父程序:啟動一個或多個其他程序(子程序)的程序。 父程序 ID(PPID):創建當前程序的父程序的 PID。

View Processes

  • Command
    • ps,顯示正在運行的程序
      • Common Options:
      • aux ,All processes, with user list
      • -ef ,All processes, full-format with CLI
    • pstree,顯示正在運行的程序及其父/子關係
      • Common Options:
      • -p ,Add PIDs to the output
    • top,顯示程序,按使用量排序,每隔一段時間刷新一次

ps 命令有很多選項,分為三種不同的類型。以下是支援的三種類型,使用時會提供不同的結果

  • BSD style options
    • 可以分組
    • 不得以破折號-為前綴
  • Unix style options
    • 可以分組
    • 每個選項必須以-破折號為前綴
  • GNU style (long) options
    • 必須以兩個破折號--為前綴

例如:

  • ps aux(BSD風格)
  • ps -ef(Unix風格)
  • ps --user(GNU風格)
  • ps -ejH(Unix風格–打印簡單的程序樹;不像pstree那麼詳盡)

以下是一些較常用的 ps 命令選項,如下:

  • a ,顯示所有 have controlling terminals (具有控制終端機) 的程序,包括其他使用者的程序。
  • x ,顯示有控制終端機和沒有控制終端機的程序。
  • -w, w ,提供詳細且寬廣的輸出。
  • u ,顯示使用者導向的格式。
  • f ,以樹狀結構(hierarchy)列出程序。
  • -l, l ,以長格式顯示。
  • U <userlist> ,根據有效使用者 ID(EUID)或名稱進行選擇。

top 命令

  • Column: Description
    • PID: Process ID
    • USER: User name
    • PR: Priority
    • NI: Nice value
    • VIRT: Virtual Image (in KB)
    • RES: Resident size (in KB)
    • SHR: Shared mem size (in KB)
    • S: Process status
    • %CPU: CPU usage.
    • %MEM: Memory usage (RES)
    • TIME+: CPU time
    • COMMAND: Command name/line