跳轉到內容

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
Fedora 29 中的 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] → 它等待任意數量的作業/程序,並將給出它們的退出程式碼

tophtopatop:它動態列出程序(類似於 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
華夏公益教科書