BusyBox

BusyBox是一個遵循GPL協議、以自由軟體形式發行的應用程式。Busybox在单一的可执行文件中提供了精简的Unix工具集，可运行于多款POSIX环境的操作系统，例如Linux（包括Android）、Hurd、FreeBSD等等。由於BusyBox執行檔的檔案比較小，使得它非常適合使用於嵌入式系统。作者将BusyBox稱為「嵌入式Linux的瑞士軍刀」。http://www.busybox.net/downloads/BusyBox.html  The self-dubbed slogan for 'The Swiss Army Knife of Embedded Linux' source. The slogan is right under the header.

 歷史 
BusyBox最初是由布魯斯·斐倫斯在1996年為Debian GNU/Linux的軟碟安装編寫的，其原始構想是希望在一張軟碟上能放入一個開機系統，以作為急救盤和安裝盤。後來它變成了嵌入式Linux裝置和系統和Linux發行版安裝程序的實質標準，因為每個Linux執行檔需要數KB的空間，而整合兩百多個程式的BusyBox可以節省大量空間。例如：Debian GNU/Linux的安裝光碟以BusyBox作為Shell程式。

Enrique Zanardi負責維護BusyBox並專注在Debian安裝系統的需求直到1998年，再由負責的Dave Cinege 接手。Cinege做了一些增加：建立了一個模組化的Build環境、轉移BusyBox的目標到一般高階的嵌入式系統。當1999年LRP開發進度趨緩時，的Erik Andersen在1999年開始正式地接手這個專案繼續維護它到2006年三月。在這段期間，Linux的嵌入式系統的市場明顯地成長，連帶使BusyBox轉趨成熟，同時擴展二者的使用群和功能。

是目前BusyBox的維護者。

 功能 
BusyBox可以被自訂化以提供一個超過兩百種功能的子集。它可以提供多數詳列在單一UNIX規範裡的功能，以及許多使用者會想在Linux系統上看到的功能。BusyBox使用ash。http://busybox.net/cgi-bin/viewcvs.cgi/trunk/busybox/shell/Config.in?rev=11083 The 'ash' shell adds about 60k in the default configuration and is the most complete and most pedantically correct shell included with busybox. This shell is actually a derivative of the Debian 'dash' shell (by Herbert Xu), which was created by porting the 'ash' shell(written by Kenneth Almquist) from NetBSD.在 BusyBox的網站上可以找到所有功能的列表。

單一執行檔
典型的電腦程式對每個應用程式都有個別的二進制（執行檔）檔案。BusyBox 是單一二進制程式，這是許多應用程式的集合，在適當參數的特定方法下，每個都可透過以不同的名稱（每個不同的名字藉由符号链接或硬連結支援）呼叫單一 BusyBox 二進制程式來存取。

BusyBox受惠於單一執行檔策略，如此一來省去了每個執行檔必需有的檔頭（特別是ELF的執行檔），這也讓Busybox不需要函式庫便可達成程式碼共用。這個技巧與FreeBSD中的crunchgencrunchgen man page  at freebsd.org 指令相似。與使用crunchgen建立的合併工具程式不同在於，Busybox只提供每個工具程式的簡化版（例如：ls指令不提供排序功能）。

共享通用的程式碼，並以程式大小最佳化為目標，使以BusyBox建構的系統所需要的空間遠小於使用對應的完整工具所需要的空間。研究比較了GNU、Busybox、asmutils及Perl實作的標準Unix指令發現特定狀況下，BusyBox的執行速度會優於其他實作，但並非總是如此。

 範例 
BusyBox所包含的程式只需要簡單的將名稱附加在第一個參數即可執行：

/bin/busybox ls

更常見的作法是，這些指令會以連結（使用硬連結或者符号链接）至BusyBox執行檔，BusyBox會偵測其被連結時的名稱，並執行對應的指令。舉例來說，只要將/bin/ls連結到/bin/busybox，即可執行

/bin/ls

 命令 
实际的命令列表按编译时的设置决定，在有Busybox的系统上执行busybox --list即可看到一个列表。

 ash - 符合POSIX的一个简单的shell
 awk - 将文件解析为记录及字段后，按模式匹配操作其内容
 cat - 将多个文件首尾相连显示于标准输出
 chmod - 更改文件的权限设置
 cp - 拷贝文件或目录
 date - 打印/设置日期时间
 dd
 df - 印出檔案系統的使用統計
 dmesg - 查看内核信息
 echo - 打印指定内容
 egrep - 接受扩展正则表达式的grep
 fgrep - 接受固定字符串模式的grep
 grep - 列出文件或标准输入中符合模式的行
 gzip
 kill - 關閉一個程序
 ln - 创建链接
 login - 以某个用户身份登录
 ls  - 列出目錄或檔案
 mdu
 mkdir - 建立一個目錄
 more
 mount 掛載儲存裝置
 mv - 移動檔案
 netstat - 查看 TCP/IP 连接信息
 ntpc
 ntpsync
 nvram
 pidof
 ping
 ps - 印出程序狀態
 pwd - 印出工作目錄
 rm - 刪除檔案
 rmdir - 移除目錄
 rstats
 sed
 sh
 sleep
 sync - 将缓存写入到硬盘中
 tar
 touch
 umount 移除掛載的儲存裝置
 uname - 查看系统信息
 usleep
 vi - 一个带有简单的模式提示的精简版仿vi编辑器
 watch
 wget - HTTP或FTP下载工具
 zcat

參見

ToyBox
 GNU Core Utilities
 util-linux, iproute2, 

 註釋 

外部連結

 Project home page
 Products known to be using BusyBox
 Building Tiny Linux Systems with BusyBox
 Busybox simplifies embedded Linux systems a developerWorks article by M. Tim Jones

Category:命令壳层
Category:嵌入式Linux
Category:自由電腦程式設計工具
Category:用C編程的自由軟體
Category:Unix软件