Linux 基礎/包管理,程序管理
外觀
< Linux 基礎
功能:安裝應用程式及其元件。
有兩種基本格式
- 基於 RPM 的系統(RedHat、CentOS、Fedora、openSUSE)使用 **rpm** 命令進行包管理。它的一個包裝器程式是 **dnf**。在 openSUSE 中,**zypper** 用於安裝。
- Debian GNU/Linux 的一個包裝器程式在 **apt** 包中。最初使用 apt-get,但此後出現了 apt 命令,它是 apt-get 的改進版本。
- apt 代表 *Advanced Packaging Tool*。
- 由於依賴關係,包管理非常困難,因此需要簡化。
- 包管理有控制檯和圖形介面。
程序管理
- 程序是已啟動程式的現有副本。
- 作業系統最重要的任務是程序管理。
- PID 0 保留,PID 1 用於 init。(程序識別符號)
- 系統中不能同時存在兩個相同的 PID。
- 除第一個(init)程序外,每個程序都是由現有程序建立的。我們將以下第一個程序稱為父程序(其識別符號通常稱為 PPID),新建立的程序稱為子程序。
- 當然,現實生活中的規則也在這裡適用,一個程序可以暫時成為另一個程序的子程序,但它也可以成為父程序,因此可以有許多子程序。
- PPID 為 2 的程序(這對其他 UNIX 和類 UNIX 系統使用者來說會很奇怪,因為在其他系統中,系統程序的屬性是 PPID=0)是核心的一部分(並且無法使用此檔名找到二進位制檔案),它們只能作為程序出於管理、排程原因而存在。它們的名字是核心級、核心或系統程序。對系統程序,沒有許可權管理有效。
- 程序在其生命週期中使用一些 CPU 資源和記憶體,並載入計算機的 I/O 子系統。程序終止有一個階段,程序作為系統中的“殭屍”程序存在..
- 我們可以透過 /proc 檔案系統直接獲取有關程序的資訊,也可以透過 **ps** 命令獲取。
- 狀態
- R:執行
- S:可中斷睡眠 → 程序等待事件或資源,可以被訊號中斷。例如,它等待計數器(睡眠)或任何 I/O 操作。
- D:不可中斷睡眠 → 程序等待事件或資源,不能被訊號中斷。通常,此狀態用於等待一些 I/O 裝置。
- T:停止 / 跟蹤:如果我們在終端中執行程序時按下 CTRL+Z 並將其放到後臺,程序就會進入此狀態
- X:死亡:此狀態不可見
- Z:殭屍程序:已終止,它保留在記憶體中
- 檢視“man ps”
- 第一個實際程序是 **init**,在新系統中是 **systemd**,其識別符號為 1。隨後啟動的程序源於該程序,因此程序在關係上形成了樹狀結構 → pstree

- “作業”一詞:我們可以在終端中使用一個命令執行多個操作/程序,例如
$ cat something.txt | grep apple
- 這裡,終端啟動了 2 個程序,它們之間是一個管道,因此需要一個新術語來解釋啟動的程序。
- 以下程序的命令
jobs
- 程序可以在前臺和後臺執行:FG、BG
- 我們可以在終端中按下 CTRL+C 來終止在前臺執行的程序
- 我們可以在終端中按下 CTRL+Z 來終止在前臺執行的程序
- 我們希望在後臺執行的程序使用 & 字元,例如
sudo apt update &
- 自動連續執行多個命令:使用 && 字元,例如
sudo apt update && sudo apt upgrade
ps:列出程序及其狀態
pstree:程序結構列表
wait: [n] → 它等待任意數量的作業/程序,並將給出它們的退出程式碼
top、htop、atop:它動態列出程序(類似於 Windows 中的任務管理器)
nice:提高或降低程序的優先順序,數字越低表示優先順序越高,例如
nice -n 3 program-name
我們可以使用 renice 在程式執行時修改其優先順序
renice -n 3 -p PID
- 程序可以透過傳送訊號從“外部”被掛起。我們可以透過輸入 **kill -l** 列出所有訊號
- 要終止程序,我們需要 PID 和使用者對程序的許可權。當然,我們可以使用超級使用者許可權終止其他使用者的程序。
- Killall 命令殺死與主程序關聯的所有程序,例如,killall conky 將殺死與 conky 關聯的所有程序。
| 名稱 | 編號 | 描述 |
|---|---|---|
| SIGTSTP | 20 | 暫停,CTRL+Z |
| SIGINT | 2 | 立即停止,CTRL+C,但程式可以忽略它 |
| SIGQUIT | 3 | 程序停止並清除其檔案 |
| SIGKILL | 9 | 立即停止,程式不能忽略 kill 命令 |
| SIGABRT | 6 | 中止,程式啟動它 |
| SIGHUP | 1 | 掛起並重新啟動(大多數守護程序重新載入其配置) |
| SIGTERM | 15 | 停止並釋放資源 |
- 它使用一個程式的輸出作為另一個程式的輸入
- 例如
ifconfig | grep eth0