antony@notes:~/suse$ cat "Process-Management.md"
Process Management
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 (背景程序) 是一個系統程序,不與終端或圖形環境相關。
- 它是一個程序或程序的集合,等待一個事件來觸發程序方面的行動。
- 在基於網絡的服務中,這個事件通常是一個網絡連接。
- 其他的服務,如
cron和atd,是基於時間的,在某些時間點上執行某些任務。
當使用者從 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