linux busybox是什麼

2022-11-11 14:00:46

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

程式設計師必備介面測試偵錯工具:

本教學操作環境: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) 中刪除組名。

1.png

現在,我認為你從來不需要這個選項,這就是為什麼它在 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。您不需要明確指定它。

2.png

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

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

相關推薦:《Linux視訊教學

以上就是linux busybox是什麼的詳細內容,更多請關注TW511.COM其它相關文章!