Linux 程序:你需要知道的一切


如果你是一位 Linux 使用者,你可能經常聽到“程序”這個詞。但 Linux 中的程序究竟是什麼,它們是如何工作的呢?在本文中,我們將深入探討你需要了解的關於 Linux 程序的一切。

什麼是 Linux 程序?

簡單來說,程序是在 Linux 系統上當前正在執行的程式。每個程序都有自己唯一的程序 ID(PID),用於識別和管理它。每次你在 Linux 系統上執行程式時,都會建立一個新的程序來執行該程式。此程序獨立於其他程序執行,允許多個程式同時執行。

Linux 中的程序是如何工作的?

Linux 中的程序以層次結構的方式工作,每個程序都有一個父程序,並且可能擁有子程序。init 程序是系統上所有其他程序的父程序。當你在系統上執行程式時,會建立一個新的程序,其父程序為 init 程序。

每個程序都有自己的地址空間,用於儲存該程序的程式碼和資料。此地址空間與其他程序隔離,防止一個程序訪問另一個程序的記憶體。核心透過使用記憶體保護機制來管理這種隔離。

Linux 中的程序狀態

Linux 中的程序可以處於以下幾種狀態之一:

  • 執行 - 程序當前正在執行並執行指令。

  • 睡眠 - 程序正在等待某些事件發生,例如等待使用者輸入或等待來自檔案的資料。

  • 停止 - 程序已被訊號停止,並且當前未執行任何指令。

  • 僵死 - 程序已完成執行,但尚未被其父程序回收。

管理 Linux 中的程序

Linux 中有幾個命令可用於管理程序:

ps

此命令顯示系統上當前正在執行的程序列表。你可以使用 ps aux 命令來顯示更詳細的程序列表,包括程序 ID、CPU 使用率和記憶體使用率。

kill

此命令用於向程序傳送訊號,可用於終止程序或向程序傳送特定訊號。例如,你可以使用 kill -9 <pid> 命令強制終止程序。

top

此命令顯示系統上執行的程序的即時檢視,包括 CPU 和記憶體使用率。此命令可用於監視系統性能。

htop

htop 是一款互動式程序檢視器,提供系統上執行的程序的即時檢視。它類似於 top 命令,但提供了更多高階功能,例如能夠根據特定條件過濾和排序程序。要在系統上安裝 htop,可以使用以下命令:

sudo apt-get install htop

pstree

pstree 是一個命令,它顯示系統上執行的程序的層次結構檢視。它以樹狀結構顯示程序,以 init 程序為根,子程序從中分支出來。此命令可用於視覺化系統上程序之間的關係。

killall

killall 是一個命令,允許你按名稱而不是按程序 ID 終止程序。當需要使用單個命令終止多個程序時,這很有用。例如,要終止所有 Firefox 瀏覽器例項,可以執行以下命令:

killall firefox

nice

nice 是一個命令,允許你設定程序的優先順序。優先順序較高的程序將獲得更多 CPU 時間,而優先順序較低的程序將獲得較少的 CPU 時間。此命令可用於管理系統效能並確保關鍵程序獲得更高的優先順序。例如,要將程序的優先順序設定為較低的值,可以執行以下命令:

nice -n 10 <command>

將 <command> 替換為你想要以較低優先順序執行的命令。

Linux 中管理程序的示例

讓我們來看一些使用我們剛剛討論過的命令在 Linux 中管理程序的示例。

示例 1:使用 ps 顯示正在執行的程序列表

要顯示系統上正在執行的程序列表,可以使用 ps 命令。例如,要顯示所有正在執行的程序的列表,可以執行以下命令:

ps

這將顯示系統上正在執行的程序列表,包括程序 ID 和其他資訊。

示例 2:使用 kill 終止程序

如果需要終止程序,可以使用 kill 命令。例如,要終止具有特定程序 ID 的程序,可以執行以下命令:

kill <pid>

將 <pid> 替換為要終止的程序的程序 ID。

示例 3:使用 top 監視系統性能

要監視系統性能,可以使用 top 命令。此命令顯示系統上執行的程序的即時檢視,包括 CPU 和記憶體使用率。例如,要顯示系統上執行的程序的即時檢視,可以執行以下命令:

top

這將顯示系統上執行的程序的即時檢視,按 CPU 使用率排序。

Linux 中程序的另一個重要方面是程序訊號。訊號是核心與程序通訊並通知它們各種事件的一種方式。例如,可以使用訊號來終止程序或中斷程序以處理關鍵事件。

Linux 中可以向程序傳送多個訊號,每個訊號都有其特定的用途。一些最常用的訊號包括:

  • SIGTERM - 此訊號用於優雅地終止程序。當程序收到此訊號時,它有機會在退出之前清理其資源。

  • SIGKILL - 此訊號用於強制終止程序。當程序收到此訊號時,它會立即終止,沒有任何機會清理其資源。

  • SIGHUP - 此訊號用於通知程序其父程序已終止。當程序收到此訊號時,通常也預期它會終止。

  • SIGINT - 此訊號用於中斷程序。當用戶在終端中按 Ctrl+C 中斷正在執行的程序時,通常會發送此訊號。

要向 Linux 中的程序傳送訊號,可以使用 kill 命令,後跟程序 ID 和訊號編號。例如,要向程序 ID 為 1234 的程序傳送 SIGTERM 訊號,可以執行以下命令:

kill -TERM 1234

這將向程序 ID 為 1234 的程序傳送 SIGTERM 訊號,要求它優雅地終止。

除了我們之前討論的訊號之外,Linux 還支援使用者定義的訊號。使用者定義的訊號可用於實現程序之間的自定義通訊或處理程序內的特定事件。

結論

程序是 Linux 作業系統的重要組成部分,允許在單個系統上同時執行多個程式。瞭解程序的工作原理以及如何管理它們對於維護系統性能和穩定性至關重要。透過使用本文中討論的命令,你可以有效地管理 Linux 系統上的程序。

更新於: 2023年4月20日

1K+ 閱讀量

開啟你的職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.