BusyBox
BusyBox 是在一个单一执行程序中实现大量Unix命令的工具,可以在不同的 POSIX 环境运行,包括 Linux , Android ( Android系统Busybox ) 和 FreeBSD ,尽管很多 BusyBox 提供的工具最初设计是通过Linux Kernel 提供的界面来工作的。 BusyBox 被设计成在资源非常有限的嵌入式操作系统工作,它的设计者称其为 嵌入式Linux的瑞士军刀 ,在一个单一执行程序中可以替代超过300个常用命令。
BusyBox 是1995年由Bruce Perens编写的,最初目标是将完整的可启动系统塞入一张软盘,以便能够为 Debian 发行版提供installer或作为救援盘。之后,它被扩展成嵌入式Linux设备和Linux发行版inatallers的标准核心用户工具集。由于每个Linux执行只需要几K资源,即使BusyBox程序结合了数百个程序,它依然节约了大量的磁盘和内存空间。
busybox 提供的命令
当直接执行 busybox 不带任何参数,则会显示其提供的命令,例如我在 Alpine Linux 上执行 busybox 可以看到支持 304 个命令,甚至包括了 awk 和 sed 这样常用的编程语言和流编辑器。
此外,可以看到 Alpine Linux 上的 init 命令,也就是作为系统服务的启动的第一个 PID 1 进程,也是 busybox 。这意味着 BuysBox 是作为取代 Systemd进程管理器 , OpenRC, sinit, init 等launch daemons 的服务。
安装 busybox
在 RedHat Linux 系上使用 DNF包管理器 可以安装
busybox:
dnf 安装 busyboxsudo dnf install busybox
apt 安装 busyboxsudo apt install busybox
当然,在 Alpine Linux 默认就使用了 busybox 无需单独安装
使用 busybox
使用 busybox 非常简单,就是在其支持的命令前使用 busybox 就可以,例如 busybox echo 就是用 busybox 来实现独立的 echo 等效命令。
当然,类似 Alpine Linux 已经默认将 busybox 作为 PID 1 进程启动,所有在系统中执行的 busybox 命令,都可以直接使用(对于操作系统就是软链接到 /bin/busybox 的对应命令链接)
请通过 busybox 不加参数看看当前系统安装的 busybox 支持哪些替代命令,就可以使用上述方法来执行。