GNU/Linux >> Znalost Linux >  >> Linux

Co je BusyBox v Linuxu? Jak to použít?

BusyBox je v těchto dnech stále populární, zejména mezi uživateli Docker. Mnoho obrázků Docker používá BusyBox, aby vám poskytlo minimální obrázek.

A to by mohlo mnoho uživatelů zmást, zvláště pokud berete příkazy Linuxu jako samozřejmost. Myslíte si, že příkazy ls, mv a další podobné příkazy jsou součástí Linuxu, ale pravdou je, že tyto příkazy jsou součástí balíčku GNU Coreutils a většina distribucí Linuxu jej má předinstalovaný.

GNU Coreutils je téměř de facto poskytovatelem různých UNIX/Linux příkazů. Téměř proto, že vždy existují alternativy a BusyBox je jednou z takových alternativ ke GNU Coreutils.

Co je BusyBox?

BusyBox je projekt s otevřeným zdrojovým kódem, který poskytuje zkrácenou implementaci přibližně 400 běžných příkazů UNIX/Linux. Svlečený? Ano. Implementace BusyBox odstraňuje neobvyklé, zřídka používané možnosti příkazů. Vše se vejde pod 1 MB a tento minimální obrázek je důvodem, proč si získal oblibu mezi vestavěnými systémy a doménami IoT i ve světě cloud computingu.

Neřiďte se její velikostí. BusyBox má prostor pro sed a awk jako klasické editory (opět stažená verze) a obsahuje také svůj vlastní shell. Obsahuje dokonce příkaz init, který lze spustit jako PID 1. To znamená, že BusyBox lze nakonfigurovat jako alternativu k Systemd, OpenRC atd.

BusyBox je vynikající alternativou ke GNU Coreutils speciálně v případech, kdy na malé velikosti operačního systému záleží.

🗒️BusyBox vám dává oblíbené linuxové příkazy jako mv, mkdir, ls atd., ale obsahuje pouze běžně používané možnosti těchto příkazů. Tento minimalismus je USP BusyBox.

Je problém, že nezískáváte úplný příkaz pro Linux možnosti s BusyBox?

To záleží na vaší potřebě, opravdu. Většina lidí nikdy nebude potřebovat všechny možnosti příkazu. Některé příkazy Linuxu mají více než 50 možností a vsadím se, že jste nikdy nepoužili všechny možnosti ani jediného příkazu Linuxu.

BusyBox omezuje zřídka používané možnosti. Například příkaz ls má volbu G, která odstraní název skupiny z výstupu dlouhého seznamu (ls -l).

Myslím, že jste tuto možnost nikdy nepotřebovali. To je důvod, proč není přítomen v implementaci ls BusyBox. Pokud opravdu potřebujete výstup, kde název skupiny není uveden, stačí k tomuto účelu použít příkaz cut nebo awk.

Vezměte si jiný příklad. Toto je stránka nápovědy k příkazu mv z GNU Coreutils:

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

Nyní je zde stránka nápovědy k příkazu mv z BusyBox:

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

Vidíte ten rozdíl?

Jak získat BusyBox?

BusyBox můžete získat různými způsoby.

Pokud si chcete BusyBox jednoduše vyzkoušet ve své aktuální distribuci Linuxu, můžete si jej nainstalovat pomocí správce balíčků vaší distribuce, jako je Apt nebo DNF nebo Yum.

Na Ubuntu můžete k instalaci BusyBox použít tento příkaz:

sudo apt install busybox

Poté, pokud chcete spustit BusyBox verzi příkazu, musíte před ni přidat busybox.

busybox cat sample.txt

Pokud BusyBox neimplementuje příkaz, vyvolá chybu 'applet nenalezen'.

[email protected]:~$ busybox xyz
xyz: applet not found

Alternativně , můžete si stáhnout obraz Dockeru BusyBox a vyzkoušet jej v běžícím kontejneru.

Ujistěte se, že máte nainstalovaný Docker. Vytáhněte oficiální obrázek dockeru:

docker pull busybox

Spusťte kontejner z obrázku a zadejte shell BusyBox:

docker run -it --rm busybox

Každý příkaz Linuxu, který zde spustíte, pochází z BusyBoxu. Nemusíte to výslovně specifikovat.

Celkově na běžném linuxovém systému BusyBox nepotřebujete. Už tam máte plnou verzi linuxových příkazů od GNU Coreutils. Není potřeba instalovat oříznutou verzi.

Ale BusyBox má své použití ve speciálních oblastech, jako když konfigurujete minimální operační systém Linux pro vestavěné zařízení nebo zařízení IoT. Totéž platí, když chcete zachovat malou velikost obrázku Docker.

Doufám, že lépe rozumíte BusyBoxu. Pokud potřebujete nějaké vysvětlení nebo máte návrh, dejte mi prosím vědět v komentářích.


Linux
  1. Jak používat BusyBox na Linuxu

  2. Jak používám cron v Linuxu

  3. Jak používat FIND v Linuxu

  1. Co je příkaz Chown v Linuxu a jak jej používat

  2. Jak používat Unzip v Linuxu

  3. Jak používat Su Command v Linuxu

  1. Jak používám nastavení usnadnění přístupu v systému Linux

  2. Jak používat Disk Google v systému Linux

  3. Jak zjistit, jaká distribuce Linuxu se používá