首頁  >  文章  >  運維  >  linux busybox是什麼

linux busybox是什麼

青灯夜游
青灯夜游原創
2022-11-11 10:20:273360瀏覽

busybox是一款開發Linux系統下軟體的開發工具,是整合了三百多個最常用Linux指令和工具的軟體。簡單的說BusyBox就好像是個大工具箱,它整合壓縮了Linux的許多工具和指令,也包含了 Linux系統的自帶的shell。 BusyBox是GNU Coreutils的絕佳替代品,特別是在作業系統的小尺寸很重要的情況下。

linux busybox是什麼

本教學操作環境:linux7.3系統、Dell G3電腦。

BusyBox 現在越來越流行,特別是在 Docker 用戶中,許多 Docker 映像使用 BusyBox 為您提供最小映像。

如果您認為Linux 命令是理所當然的,這可能會讓許多用戶感到特別困惑,您認為ls、mv 和其他此類命令是Linux 的一部分,而事實是這些命令是GNU Coreutils 軟體包的一部分,並且大多數Linux 發行版都預先安裝了它。

GNU Coreutils幾乎是各種 UNIX/Linux 指令的事實上的提供者,幾乎是因為總是有替代品,而 BusyBox 就是 GNU Coreutils 的替代品之一。

什麼是BusyBox?

busybox是一款開發Linux系統下軟體的開發工具。

BusyBox 是一個開源項目,它提供了大約 400 個常見 UNIX/Linux 指令的精簡實作。

BusyBox 是一個整合了三百多個最常用Linux指令和工具的軟體。 BusyBox 包含了一些簡單的工具,例如ls、cat和echo等等,也包含了一些更大、更複雜的工具,例如grep、find、mount以及telnet。有些人稱 BusyBox 為 Linux 工具裡的瑞士軍刀。簡單的說BusyBox就好像是個大工具箱,它整合壓縮了 Linux 的許多工具和指令,也包含了 Linux 系統的自帶的shell。

BusyBox 實作刪除了不常見的、很少使用的命令選項,一切都小於 1 MB,這個最小的圖像是它在嵌入式系統和物聯網領域以及雲端運算世界中流行的原因。

不要看它的大小,BusyBox像經典編輯器一樣具有sed 和awk 的範圍(再次精簡版),它也包含自己的shell,它甚至包含一個可以作為PID 1 啟動的init 命令,這意味著BusyBox 可以配置為Systemd、OpenRC 等的替代品。

BusyBox 是 GNU Coreutils 的絕佳替代品,特別是在作業系統的小尺寸很重要的情況下。

BusyBox 為您提供流行的 Linux 命令,如 mv、mkdir、ls 等,但它僅包含這些命令的常用選項。這種極簡主義是 BusyBox 的 USP。

您沒有使用 BusyBox 獲得完整的 Linux 命令選項是一個問題嗎?

這取決於你的需要,真的,大多數人永遠不需要命令的所有選項。有些 Linux 指令有超過 50 個選項,我敢打賭,你甚至從未使用過單一 Linux 指令的所有選項。

BusyBox 減少了很少使用的選項,例如,ls 命令具有選項 G,它從長列表輸出 (ls -l) 中刪除群組名稱。

linux busybox是什麼

現在,我認為你從來不需要這個選項,這就是為什麼它在BusyBox 的ls 實作中不存在的原因,如果你確實需要一個不包含組名的輸出,您所要做的就是為此目的使用cut 或awk 命令。

再舉一個例子。這是來自 GNU Coreutils的mv 命令的幫助頁面:

Usage: mv [OPTION]... [-T] SOURCE DEST
  or:  mv [OPTION]... SOURCE... DIRECTORY
  or:  mv [OPTION]... -t DIRECTORY SOURCE...
Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.

Mandatory arguments to long options are mandatory for short options too.
      --backup[=CONTROL]       make a backup of each existing destination file
  -b                           like --backup but does not accept an argument
  -f, --force                  do not prompt before overwriting
  -i, --interactive            prompt before overwrite
  -n, --no-clobber             do not overwrite an existing file
If you specify more than one of -i, -f, -n, only the final one takes effect.
      --strip-trailing-slashes  remove any trailing slashes from each SOURCE
                                 argument
  -S, --suffix=SUFFIX          override the usual backup suffix
  -t, --target-directory=DIRECTORY  move all SOURCE arguments into DIRECTORY
  -T, --no-target-directory    treat DEST as a normal file
  -u, --update                 move only when the SOURCE file is newer
                                 than the destination file or when the
                                 destination file is missing
  -v, --verbose                explain what is being done
  -Z, --context                set SELinux security context of destination
                                 file to default type
      --help     display this help and exit
      --version  output version information and exit

現在,這裡是 BusyBox 的 mv 命令幫助頁面:

Usage: mv [-fin] SOURCE DEST
or: mv [-fin] SOURCE... DIRECTORY

Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY

 -f Don't prompt before overwriting
 -i Interactive, prompt before overwrite
 -n Don't overwrite an existing file

看到不同?

如何取得 BusyBox?

您可以透過多種方式獲得 BusyBox。

如果您只是想在目前的 Linux 發行版上體驗 BusyBox,您可以使用發行版的套件管理器(如 Apt 或 DNF 或Yum )安裝它。

在 Ubuntu 上,您可以使用以下命令安裝 BusyBox:

sudo apt install busybox

之後,如果要執行 BusyBox 版本的命令,則必須在其前面新增 busybox。

busybox cat sample.txt

如果 BusyBox 未實作指令,則會引發「找不到小程式」的錯誤。

abhishek@LHB:~$ busybox xyz
xyz: applet not found

或者,您可以下載BusyBox 的 Docker 映像並在運行的容器中體驗它。

請確保您已安裝Docker,拉取官方docker映像:

docker pull busybox

從映像運行一個容器並進入BusyBox shell:

docker run -it --rm busybox

您在此處運行的每個Linux 指令都來自BusyBox。您不需要明確指定它。

linux busybox是什麼

總之,您不需要在常規 Linux 系統上使用 BusyBox,您已經擁有來自 GNU Coreutils 的完整版本的 Linux 命令。無需安裝精簡版。

但是 BusyBox 在特殊領域有其用途,例如為嵌入式或物聯網裝置配置最小的 Linux 作業系統時。當您希望保持 Docker 映像的大小較小時也是如此。

相關推薦:《Linux影片教學

以上是linux busybox是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn