應用程序、程序、程序、作業、任務、服務、守護程序、腳本、命令之間有什麼區別?
有人可以清楚地提供這些術語之間的差異和/或等價嗎?我總是把事情搞混,在閱讀文件時總是迷失方向……
有用的先前答案:
Ubuntu 社區:
tl;博士總結:這些術語都沒有一個通用的定義。
- 應用:這個詞的定義並不普遍,它的定義取決於上下文、社區,有時甚至是使用它的人。
- 程序:這個詞的定義並不普遍,它的定義取決於上下文、社區,有時甚至是使用它的人。
- 過程:這個詞的定義並不普遍,它的定義取決於上下文、社區,有時甚至是使用它的人。
- 工作:這個詞的定義並不普遍,它的定義取決於上下文、社區,有時甚至是使用它的人。
- 任務:這個詞的定義並不普遍,它的定義取決於上下文、社區,有時甚至是使用它的人。
- 服務:這個詞的定義並不普遍,它的定義取決於上下文、社區,有時甚至是使用它的人。
- daemon:這個詞的定義並不普遍,它的定義取決於上下文、社區,有時甚至是使用它的人。
- script:這個詞的定義並不普遍,它的定義取決於上下文、社區,有時甚至是使用它的人。
- command:這個詞的定義並不普遍,它的定義取決於上下文、社區,有時甚至是使用它的人。
(我想你開始看到這裡的模式了。)
在所有這些情況下,您都必須詢問使用該術語的人來定義它。唯一可以告訴您某個特定人如何使用該術語的人就是那個特定的人。
如果您正在閱讀官方標准文件,則該標準中使用的術語通常會明確定義,在這種情況下,僅在此特定標准文件中,術語的含義與標准文件所說的完全相同。
讓我們僅作為一個例子來看看其中一個術語command,並且讓我們進一步將自己限制在Single Unix Specification version 4, 2018 Edition、Volumes XBD (Base Definitions)和XCU (Shell & Utilities)。
在 XBD Chapter 3 Definitions , Clause 3.104 Commands中,術語Command定義如下:
3.104 命令
用於執行特定任務的 shell 指令。
筆記:
Shell 命令在 XCU Shell 命令中有詳細定義。
(順便說一下,請注意定義本身如何使用術語task,這也是您詢問的術語之一,但實際上並未在 SUSv4 中定義。)
因此,SUSv4 似乎將術語命令定義為“對 shell 執行特定任務的指令”。XCU Chapter 2 Shell Command Language , Clause 2.9 Shell Commands中也有一個更詳細定義的連結:
2.9 外殼命令
$$ … $$ 命令是以下之一:
- 簡單命令(參見簡單命令)
- 管道(請參閱管道)
- 列出複合列表(見列表)
- 複合命令(參見複合命令)
- 函式定義(見函式定義命令)
$$ … $$
並在2.9.1簡單命令、2.9.2管道、2.9.3列表、2.9.4複合命令和2.9.5函式定義命令中進一步定義每一個。
太好了,那麼,這是否意味著我們現在知道命令是什麼了?好吧,不完全是,因為如果我們閱讀XCU 第 4 章實用程序中的
ed
實用程序規範,我們會發現它以不同的方式使用術語命令:描述
該
ed
實用程序是一個面向行的文本編輯器,它使用兩種模式:命令模式和輸入模式。在命令模式下,輸入字元應被解釋為命令,而在輸入模式下,它們應被解釋為文本。請參閱擴展說明部分。$$ … $$ 擴展描述
該
ed
實用程序應在其正在編輯的文件的副本上執行;在給出w(寫入)命令之前,對副本所做的更改不會對文件產生影響。文本的副本稱為緩衝區。命令
ed
具有簡單而規則的結構:零個、一個或兩個地址,後跟一個單字元命令,可能後跟該命令的參數。這些地址指定緩衝區中的一個或多個行。每個需要地址的命令都有預設地址,因此通常可以省略地址。如果指定了**-p**選項,則提示字元串應在讀取每個命令之前寫入標準輸出。然後繼續進一步定義命令的結構,以及存在的各種命令。
因此,即使在同一個規範中,我們已經找到了術語命令的兩種不同定義。一個是明確給出的“對 shell 執行特定任務的指令”。另一個隱含地作為“
ed
實用程序執行特定任務的指令”。但它變得更加有趣。如果我們查看
awk
實用程序的規範,我們會發現,就像 shell 一樣,就像ed
實用程序一樣,我們可以提供“執行特定任務的指令”,因此我們可以假設這也稱為命令。然而,事實並非如此:描述
該
awk
實用程序應執行以awk
專門用於文本數據操作的程式語言編寫的程序。$$ … $$
因此,被稱為命令的相同概念在中
ed
稱為程序。awk
巧合的是,這是您詢問的另一個術語,但可能不是您認為的定義!在
find
實用程序中,我們再次有一個類似的概念,但這裡它既不稱為命令也不稱為程序,而是由基本元素和運算符組成的表達式。在
pax
實用程序中,我們再次有“告訴實用程序做什麼的東西”,但在這裡它被稱為模式,然而它與chmod
實用程序所謂的模式完全不同。如您所見,即使我們將自己限制在非常狹窄的上下文中(僅限於 2018 年版的單一 Unix 規範第 4 版,實際上只有四卷中的兩卷)並且只有其中一個術語,我們也可以已經找到由同一個術語描述的多個不同概念,以及描述相同概念(或非常相似、密切相關的概念)的不同術語。