1 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [ ]>
2 <book id="BusyBoxDocumentation">
4 <title>BusyBox - The Swiss Army Knife of Embedded Linux</title>
8 This documentation is free software; you can redistribute
9 it and/or modify it under the terms of the GNU General Public
10 License as published by the Free Software Foundation; either
11 version 2 of the License, or (at your option) any later
16 This program is distributed in the hope that it will be
17 useful, but WITHOUT ANY WARRANTY; without even the implied
18 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19 See the GNU General Public License for more details.
23 You should have received a copy of the GNU General Public
24 License along with this program; if not, write to the Free
25 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
30 For more details see the file COPYING in the source
31 distribution of Linux.
37 <chapter id="Introduction">
38 <title>Introduction</title>
41 BusyBox combines tiny versions of many common UNIX utilities into a single
42 small executable. It provides minimalist replacements for most of the
43 utilities you usually find in fileutils, shellutils, findutils, textutils,
44 grep, gzip, tar, etc. BusyBox provides a fairly complete POSIX environment
45 for any small or embedded system. The utilities in BusyBox generally have
46 fewer options than their full-featured GNU cousins; however, the options
47 that are included provide the expected functionality and behave very much
48 like their GNU counterparts.
52 BusyBox has been written with size-optimization and limited resources in
53 mind. It is also extremely modular so you can easily include or exclude
54 commands (or features) at compile time. This makes it easy to customize
55 your embedded systems. To create a working system, just add a kernel, a
56 shell (such as ash), and an editor (such as elvis-tiny or ae).
61 <title>How to use BusyBox</title>
62 <sect1 id="How-to-use-BusyBox">
67 BusyBox <function> [arguments...] # or
73 <function> [arguments...] # if symlinked
78 <sect1 id="Invoking-BusyBox">
79 <title>Invoking BusyBox</title>
82 When you create a link to BusyBox for the function you wish to use, when
83 BusyBox is called using that link it will behave as if the command itself
99 will cause BusyBox to behave as 'ls' (if the 'ls' command has been compiled
104 You can also invoke BusyBox by issuing the command as an argument on the
105 command line. For example, entering
115 will also cause BusyBox to behave as 'ls'.
120 <sect1 id="Common-options">
121 <title>Common options</title>
124 Most BusyBox commands support the <emphasis>--help</emphasis> option to provide
125 a terse runtime description of their behavior.
130 <chapter id="Commands">
131 <title>BusyBox Commands</title>
132 <sect1 id="Available-BusyBox-Commands">
133 <title>Available BusyBox Commands</title>
135 Currently defined functions include:
139 ar, basename, cat, chgrp, chmod, chown, chroot, chvt, clear,
140 cp, cut, date, dc, dd, deallocvt, df, dirname, dmesg, dpkg-deb,
141 du, dumpkmap, dutmp, echo, false, fbset, fdflush, find, free,
142 freeramdisk, fsck.minix, grep, gunzip, gzip, halt, head,
143 hostid, hostname, id, init, insmod, kill, killall, length, ln,
144 loadacm, loadfont, loadkmap, logger, logname, ls, lsmod,
145 makedevs, mkdir, mkfifo, mkfs.minix, mknod, mkswap, mktemp,
146 more, mount, mt, mv, nc, nslookup, ping, poweroff, printf, ps,
147 pwd, reboot, renice, reset, rm, rmdir, rmmod, run-parts, sed, setkeycodes, sh, sleep,
148 sort, swapoff, swapon, sync, syslogd, tail, tar, tee, telnet,
149 test, touch, tr, true, tty, umount, uname, uniq, update,
150 uptime, usleep, uudecode, uuencode, wc, which, whoami, yes,
159 Usage: ar [OPTION] archive [FILENAME]...
163 Extract or list files from an ar archive.
172 o Preserve original dates
176 v Verbosely list files processed
181 <sect1 id="basename">
182 <title>basename</title>
184 Usage: basename FILE [SUFFIX]
188 Strip directory path and suffixes from FILE. If specified, also removes
198 $ basename /usr/local/bin/foo
200 $ basename /usr/local/bin/
202 $ basename /foo/bar.txt .txt
216 Concatenate <literal>FILE(s)</literal> and prints them to the standard
236 Usage: chgrp [OPTION]... GROUP FILE...
240 Change the group membership of each FILE to GROUP.
249 -R Change files and directories recursively
260 -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
261 $ chgrp root /tmp/foo
263 -r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo
272 Usage: chmod [<emphasis>-R</emphasis>] MODE[,MODE]... FILE...
276 Change file access permissions for the specified
277 <literal>FILE(s)</literal> (or directories). Each MODE is defined by
278 combining the letters for WHO has access to the file, an OPERATOR for
279 selecting how the permissions should be changed, and a PERMISSION for
280 <literal>FILE(s)</literal> (or directories).
284 WHO may be chosen from
289 u User who owns the file
290 g Users in the file's Group
291 o Other users not in the file's group
297 OPERATOR may be chosen from
303 - Remove a permission
304 = Assign a permission
309 PERMISSION may be chosen from
316 x Execute (or access for directories)
317 s Set user (or group) ID bit
318 t Sticky bit (for directories prevents removing files by non-owners)
323 Alternately, permissions can be set numerically where the first three
324 numbers are calculated by adding the octal values, such as
336 An optional fourth digit can also be used to specify
353 -R Change files and directories recursively.
364 -rw-rw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo
367 -rwxrw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo*
370 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
378 Usage: chown [OPTION]... OWNER[<.|:>[GROUP] FILE...
382 Change the owner and/or group of each FILE to OWNER and/or GROUP.
391 -R Change files and directories recursively
402 -r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo
403 $ chown root /tmp/foo
405 -r--r--r-- 1 root andersen 0 Apr 12 18:25 /tmp/foo
406 $ chown root.root /tmp/foo
408 -r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo
414 <title>chroot</title>
416 Usage: chroot NEWROOT [COMMAND...]
420 Run COMMAND with root directory set to NEWROOT.
430 lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -> /BusyBox
431 $ mount /dev/hdc1 /mnt -t minix
434 -rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls*
446 Change the foreground virtual terminal to /dev/ttyN
466 Usage: cp [OPTION]... SOURCE DEST
471 or: cp [OPTION]... SOURCE... DIRECTORY
476 Copy SOURCE to DEST, or multiple <literal>SOURCE(s)</literal> to
488 -p Preserve file attributes if possible
489 -R Copy directories recursively
498 Usage: cut [OPTION]... [FILE]...
502 Print selected fields from each input FILE to standard output.
511 -b LIST Output only bytes from LIST
512 -c LIST Output only characters from LIST
513 -d CHAR Use CHAR instead of tab as the field delimiter
514 -s Output only the lines containing delimiter
515 -f N Print only these fields
526 $ echo "Hello world" | cut -f 1 -d ' '
528 $ echo "Hello world" | cut -f 2 -d ' '
538 Usage: date [OPTION]... [+FORMAT]
543 or: date [OPTION] [MMDDhhmm[[CC]YY][.ss]]
548 Display the current time in the given FORMAT, or set the system date.
557 -R Output RFC-822 compliant date string
558 -s Set time described by STRING
559 -u Print or set Coordinated Universal Time
570 Wed Apr 12 18:52:41 MDT 2000
579 Usage: dc [EXPRESSION]
583 This is a Tiny RPN calculator that understands the
584 following operations: +, -, /, *, and, or, not, eor. If
585 no arguments are given, dc will process input from
590 The behaviour of BusyBox/dc deviates (just a little ;-)
591 from GNU/dc, but this will be remedied in the future.
608 $ echo 72 9 div 8 mul | dc
618 Usage: dd [OPTION]...
622 Copy a file, converting and formatting according to
632 if=FILE Read from FILE instead of stdin
633 of=FILE Write to FILE instead of stdout
634 bs=N Read and write N bytes at a time
635 count=N Copy only N input blocks
636 skip=N Skip N input blocks
637 seek=N Skip N output blocks
642 Numbers may be suffixed by w (x2), k (x1024), b (x512),
652 $ dd if=/dev/zero of=/dev/ram1 bs=1M count=4
659 <sect1 id="deallocvt">
660 <title>deallocvt</title>
667 Deallocate unused virtual terminal /dev/ttyN.
679 Print the filesystem space used and space available.
689 Filesystem 1k-blocks Used Available Use% Mounted on
690 /dev/sda3 8690864 8553540 137324 98% /
691 /dev/sda1 64216 36364 27852 57% /boot
693 Filesystem 1k-blocks Used Available Use% Mounted on
694 /dev/sda3 8690864 8553540 137324 98% /
700 <title>dirname</title>
707 Strip non-directory suffix from NAME.
728 Usage: dmesg [OPTION]...
732 Print or control the kernel ring buffer.
741 -c Clear the ring buffer after printing
742 -n LEVEL Set the console logging level to LEVEL
743 -s BUFSIZE Query ring buffer using a buffer of BUFSIZE
748 <sect1 id="dos2unix">
749 <title>dos2unix</title>
752 Usage: dos2unix < dosfile > unixfile
756 Converts a text file from dos format to unix format.
761 <sect1 id="dpkg-deb">
762 <title>dpkg-deb</title>
765 Usage: dpkg-deb [OPTION] archive [directory]
769 Debian package archive (.deb) manipulation tool
778 -c List the contents of the filesystem tree archive portion of the package
779 -e Extracts the control information files from a package archive into the specified directory.
780 If no directory is specified then a subdirectory DEBIAN in the current directory is used.
781 -x Silently extracts the filesystem tree from a package archive into the specified directory.
782 -X Extracts the filesystem tree from a package archive into the specified directory, listing the files as it goes.
783 If required the specified directory (but not its parents) will be created.
793 dpkg-deb -e ./busybox_0.48-1_i386.deb
794 dpkg-deb -x ./busybox_0.48-1_i386.deb ./unpack_dir
803 Usage: du [OPTION]... [FILE]...
807 Summarize the disk space used for each FILE or current
808 directory. Disk space printed in units of 1k (i.e.,
818 -l Count sizes many times if hard linked
819 -s Display only a total for each argument
831 12 ./kernel-patches/CVS
844 <sect1 id="dumpkmap">
845 <title>dumpkmap</title>
852 Prints out a binary keyboard translation table to standard output.
861 $ dumpkmap < keymap
874 Dump utmp file format (pipe delimited) from FILE or
884 $ dutmp /var/run/utmp
885 8|7||si|||0|0|0|955637625|760097|0
886 2|0|~|~~|reboot||0|0|0|955637625|782235|0
887 1|20020|~|~~|runlevel||0|0|0|955637625|800089|0
888 8|125||l4|||0|0|0|955637629|998367|0
889 6|245|tty1|1|LOGIN||0|0|0|955637630|998974|0
890 6|246|tty2|2|LOGIN||0|0|0|955637630|999498|0
891 7|336|pts/0|vt00andersen|andersen|:0.0|0|0|0|955637763|0|0
900 Usage: echo [OPTION]... [ARG]...
904 Print ARGs to stdout.
913 -n Suppress trailing newline
914 -e Enable interpretation of escaped characters
915 -E Disable interpretation of escaped characters
925 $ echo "Erik is cool"
927 $ echo -e "Erik\nis\ncool"
931 $ echo "Erik\nis\ncool"
941 Usage: expr EXPRESSION
945 Prints the value of EXPRESSION to standard output.
954 ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2
955 ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0
956 ARG1 < ARG2 ARG1 is less than ARG2
957 ARG1 <= ARG2 ARG1 is less than or equal to ARG2
958 ARG1 = ARG2 ARG1 is equal to ARG2
959 ARG1 != ARG2 ARG1 is unequal to ARG2
960 ARG1 >= ARG2 ARG1 is greater than or equal to ARG2
961 ARG1 > ARG2 ARG1 is greater than ARG2
962 ARG1 + ARG2 arithmetic sum of ARG1 and ARG2
963 ARG1 - ARG2 arithmetic difference of ARG1 and ARG2
964 ARG1 * ARG2 arithmetic product of ARG1 and ARG2
965 ARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2
966 ARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2
967 STRING : REGEXP anchored pattern match of REGEXP in STRING
968 match STRING REGEXP same as STRING : REGEXP
969 substr STRING POS LENGTH substring of STRING, POS counted from 1
970 index STRING CHARS index in STRING where any CHARS is found, or 0
971 length STRING length of STRING
972 quote TOKEN interpret TOKEN as a string, even if it is a
973 keyword like `match' or an operator like `/'
974 ( EXPRESSION ) value of EXPRESSION
979 Beware that many operators need to be escaped or quoted for shells.
980 Comparisons are arithmetic if both ARGs are numbers, else
981 lexicographical. Pattern matches return the string matched between
982 \( and \) or null; if \( and \) are not used, they return the number
983 of characters matched or 0.
997 Return an exit code of FALSE (1).
1014 <title>fbset</title>
1017 Usage: fbset [OPTION]... [MODE]
1021 Show and modify frame buffer device settings.
1030 -h Display option summary
1031 -fb DEVICE Operate on DEVICE
1032 -db FILE Use FILE for mode database
1033 -g XRES YRES VXRES VYRES DEPTH Set all geometry parameters
1034 -t PIXCLOCK LEFT RIGHT UPPER LOWER HSLEN VSLEN Set all timing parameters
1035 -xres RES Set visible horizontal resolution
1036 -yres RES Set visible vertical resolution
1048 # D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz
1049 geometry 1024 768 1024 768 16
1050 timings 12714 128 32 16 4 128 4
1052 rgba 5/11,6/5,5/0,0/0
1058 <sect1 id="fdflush">
1059 <title>fdflush</title>
1062 Usage: fdflush DEVICE
1066 Force floppy disk drive to detect disk change on DEVICE.
1074 Usage: find [PATH]... [EXPRESSION]
1078 Search for files in a directory hierarchy. The default
1079 PATH is the current directory; default EXPRESSION is
1084 EXPRESSION may consist of:
1089 -follow Dereference symbolic links
1090 -name PATTERN File name (leading directories removed) matches PATTERN
1091 -type X Filetype matches X (where X is one of: f,d,l,b,c,...)
1092 -perm PERMS Permissions match any of (+NNN); all of (-NNN); or exactly (NNN)
1093 -mtime TIME Modified time is greater than (+N); less than (-N); or exactly (N) days
1103 $ find / -name /etc/passwd
1117 Displays the amount of free and used system memory.
1127 total used free shared buffers
1128 Mem: 257628 248724 8904 59644 93124
1129 Swap: 128516 8404 120112
1130 Total: 386144 257128 129016
1135 <sect1 id="freeramdisk">
1136 <title>freeramdisk</title>
1139 Usage: freeramdisk DEVICE
1143 Free all memory used by the ramdisk DEVICE.
1152 $ freeramdisk /dev/ram2
1157 <sect1 id="fsck.minix">
1158 <title>fsck.minix</title>
1161 Usage: fsck.minix [OPTION]... DEVICE
1165 Perform a consistency check on the MINIX filesystem on
1175 -l List all filenames
1176 -r Perform interactive repairs
1177 -a Perform automatic repairs
1179 -s Output super-block information
1180 -m Activate MINIX-like "mode not cleared" warnings
1181 -f Force file system check.
1187 <title>getopt</title>
1190 Usage: getopt [OPTIONS]...
1194 Parse command options
1199 -a, --alternative Allow long options starting with single -\n"
1200 -l, --longoptions=longopts Long options to be recognized\n"
1201 -n, --name=progname The name under which errors are reported\n"
1202 -o, --options=optstring Short options to be recognized\n"
1203 -q, --quiet Disable error reporting by getopt(3)\n"
1204 -Q, --quiet-output No normal output\n"
1205 -s, --shell=shell Set shell quoting conventions\n"
1206 -T, --test Test for getopt(1) version\n"
1207 -u, --unqote Do not quote the output\n"
1220 GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
1221 -n 'example.busybox' -- "$@"`
1222 if [ $? != 0 ] ; then exit 1 ; fi
1223 eval set -- "$GETOPT"
1226 -a|--a-long) echo "Option a" ; shift ;;
1227 -b|--b-long) echo "Option b, argument \`$2'" ; shift 2 ;;
1230 "") echo "Option c, no argument"; shift 2 ;;
1231 *) echo "Option c, argument \`$2'" ; shift 2 ;;
1233 --) shift ; break ;;
1234 *) echo "Internal error!" ; exit 1 ;;
1245 Usage: grep [OPTIONS]... PATTERN [FILE]...
1249 Search for PATTERN in each FILE or stdin.
1258 -h Suppress the prefixing filename on output
1259 -i Ignore case distinctions
1260 -n Print line number with output lines
1261 -q Be quiet. Returns 0 if result was found, 1 otherwise
1262 -v Select non-matching lines
1267 This version of grep matches full regular expressions.
1276 $ grep root /etc/passwd
1277 root:x:0:0:root:/root:/bin/bash
1278 $ grep ^[rR]oo. /etc/passwd
1279 root:x:0:0:root:/root:/bin/bash
1285 <title>gunzip</title>
1288 Usage: gunzip [OPTION]... FILE
1292 Uncompress FILE (or stdin if FILE is '-').
1301 -c Write output to standard output
1302 -t Test compressed file integrity
1312 $ ls -la /tmp/BusyBox*
1313 -rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz
1314 $ gunzip /tmp/BusyBox-0.43.tar.gz
1315 $ ls -la /tmp/BusyBox*
1316 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
1325 Usage: gzip [OPTION]... FILE
1329 Compress FILE (or stdin if FILE is '-') with maximum
1330 compression to FILE.gz (or stdout if FILE is '-').
1339 -c Write output to standard output
1350 $ ls -la /tmp/BusyBox*
1351 -rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar
1352 $ gzip /tmp/BusyBox-0.43.tar
1353 $ ls -la /tmp/BusyBox*
1354 -rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/BusyBox-0.43.tar.gz
1375 Usage: head [OPTION] FILE...
1379 Print first 10 lines of each FILE to standard output.
1380 With more than one FILE, precede each with a header
1381 giving the file name. With no FILE, or when FILE is -,
1382 read standard input.
1391 -n NUM Print first NUM lines instead of first 10
1401 $ head -n 2 /etc/passwd
1402 root:x:0:0:root:/root:/bin/bash
1403 daemon:x:1:1:daemon:/usr/sbin:/bin/sh
1409 <title>hostid</title>
1416 Prints out a unique 32-bit identifier for the current
1417 machine. The 32-bit identifier is intended to be unique
1418 among all UNIX systems in existence.
1422 <sect1 id="hostname">
1423 <title>hostname</title>
1426 Usage: hostname [OPTION]... [HOSTNAME|-F FILE]
1430 Get or set the hostname or DNS domain name. If a
1431 hostname is given (or a file with the -F parameter), the
1432 host name will be set.
1442 -i Addresses for the hostname
1444 -F, --file FILE Use the contents of FILE to specify the hostname
1464 Usage: id [OPTION]... [USERNAME]
1468 Print information for USERNAME or the current user.
1477 -g Print only the group ID
1478 -u Print only the user ID
1479 -n print a name instead of a number (with for -ug)
1480 -r Print the real user ID instead of the effective ID (with -ug)
1491 uid=1000(andersen) gid=1000(andersen)
1504 Init is the parent of all processes.
1508 This version of init is designed to be run only by the
1513 BusyBox init doesn't support multiple runlevels. The
1514 runlevels field of the /etc/inittab file is completely
1515 ignored by BusyBox init. If you want runlevels, use
1520 BusyBox init works just fine without an inittab. If no
1521 inittab is found, it has the following default behavior:
1526 ::sysinit:/etc/init.d/rcS
1532 If it detects that /dev/console is _not_ a serial
1533 console, it will also run:
1538 tty2::askfirst:/bin/sh
1543 If you choose to use an /etc/inittab file, the inittab
1544 entry format is as follows:
1549 <id>:<runlevels>:<action>:<process>
1557 WARNING: This field has a non-traditional meaning for BusyBox init!
1558 The id field is used by BusyBox init to specify the controlling tty
1559 for the specified process to run on. The contents of this field
1560 are appended to "/dev/" and used as-is. There is no need for this
1561 field to be unique, although if it isn't you may have strange
1562 results. If this field is left blank, the controlling tty is set
1563 to the console. Also note that if BusyBox detects that a serial
1564 console is in use, then only entries whose controlling tty is
1565 either the serial console or /dev/null will be run. BusyBox init
1566 does nothing with utmp. We don't need no stinkin' utmp.
1572 <title>runlevels</title>
1575 The runlevels field is completely ignored.
1580 <title>action</title>
1584 Valid actions include: sysinit, respawn, askfirst, wait,
1585 once, and ctrlaltdel.
1590 The available actions can be classified into two groups: actions
1591 that are run only once, and actions that are re-run when the specified
1596 Run only-once actions:
1600 'sysinit' is the first item run on boot. init waits until all
1601 sysinit actions are completed before continuing. Following the
1602 completion of all sysinit actions, all 'wait' actions are run.
1603 'wait' actions, like 'sysinit' actions, cause init to wait until
1604 the specified task completes. 'once' actions are asyncronous,
1605 therefore, init does not wait for them to complete. 'ctrlaltdel'
1606 actions are run immediately before init causes the system to reboot
1607 (unmounting filesystems with a 'ctrlaltdel' action is a very good
1612 Run repeatedly actions:
1616 'respawn' actions are run after the 'once' actions. When a process
1617 started with a 'respawn' action exits, init automatically restarts
1618 it. Unlike sysvinit, BusyBox init does not stop processes from
1619 respawning out of control. The 'askfirst' actions acts just like
1620 respawn, except that before running the specified process it
1621 displays the line "Please press Enter to activate this console."
1622 and then waits for the user to press enter before starting the
1627 Unrecognized actions (like initdefault) will cause init to emit an
1628 error message, and then go along with its business. All actions are
1629 run in the reverse order from how they appear in /etc/inittab.
1635 <title>process</title>
1638 Specifies the process to be executed and its
1644 <title>Example /etc/inittab file</title>
1648 # This is run first except when booting in single-user mode.
1650 ::sysinit:/etc/init.d/rcS
1652 # /bin/sh invocations on selected ttys
1654 # Start an "askfirst" shell on the console (whatever that may be)
1656 # Start an "askfirst" shell on /dev/tty2-4
1657 tty2::askfirst:-/bin/sh
1658 tty2::askfirst:-/bin/sh
1659 tty2::askfirst:-/bin/sh
1661 # /sbin/getty invocations for selected ttys
1663 tty4::respawn:/sbin/getty 38400 tty5
1664 tty5::respawn:/sbin/getty 38400 tty6
1666 # Example of how to put a getty on a serial line (for a terminal)
1668 #::respawn:/sbin/getty -L ttyS0 9600 vt100
1669 #::respawn:/sbin/getty -L ttyS1 9600 vt100
1671 # Example how to put a getty on a modem line.
1672 #::respawn:/sbin/getty 57600 ttyS2
1674 # Stuff to do before rebooting
1675 ::ctrlaltdel:/bin/umount -a -r
1676 ::ctrlaltdel:/sbin/swapoff
1683 <title>insmod</title>
1686 Usage: insmod [OPTION]... MODULE [symbol=value]...
1690 Load MODULE into the kernel.
1699 -f Force module to load into the wrong kernel version.
1700 -k Make module autoclean-able.
1702 -x Do not export externs
1703 -L Prevent simultaneous loads of the same module
1712 Usage: kill [OPTION] PID...
1716 Send a signal (default is SIGTERM) to the specified
1726 -l List all signal names and numbers
1727 -SIG Send signal SIG
1738 252 root root S [apache]
1739 263 www-data www-data S [apache]
1740 264 www-data www-data S [apache]
1741 265 www-data www-data S [apache]
1742 266 www-data www-data S [apache]
1743 267 www-data www-data S [apache]
1749 <sect1 id="killall">
1750 <title>killall</title>
1753 Usage: killall [OPTION] NAME...
1757 Send a signal (default is SIGTERM) to the specified
1767 -l List all signal names and numbers
1768 -SIG Send signal SIG
1784 <title>length</title>
1787 Usage: length STRING
1791 Print the length of STRING.
1810 Usage: ln [OPTION]... TARGET FILE|DIRECTORY
1814 Create a link named FILE or DIRECTORY to the specified
1815 TARGET. You may use '--' to indicate that all following
1816 arguments are non-options.
1825 -s Make symbolic link instead of hard link
1826 -f Remove existing destination file
1836 $ ln -s BusyBox /tmp/ls
1838 lrwxrwxrwx 1 root root 7 Apr 12 18:39 ls -> BusyBox*
1843 <sect1 id="loadacm">
1844 <title>loadacm</title>
1851 Load an acm from stdin.
1860 $ loadacm < /etc/i18n/acmname
1865 <sect1 id="loadfont">
1866 <title>loadfont</title>
1873 Load a console font from stdin.
1882 $ loadfont < /etc/i18n/fontname
1887 <sect1 id="loadkmap">
1888 <title>loadkmap</title>
1895 Load a binary keyboard translation table from stdin.
1904 $ loadkmap < /etc/i18n/lang-keymap
1910 <title>logger</title>
1913 Usage: logger [OPTION]... [MESSAGE]
1917 Write MESSAGE to the system log. If MESSAGE is omitted, log
1927 -s Log to stderr as well as the system log
1928 -t Log using the specified tag (defaults to user name)
1929 -p Enter the message with the specified priority
1930 This may be numerical or a ``facility.level'' pair
1945 <sect1 id="logname">
1946 <title>logname</title>
1953 Print the name of the current user.
1972 Usage: ls [OPTION]... [FILE]...
1985 -a Do not hide entries starting with .
1986 -c With -l: show ctime (the time of last
1987 modification of file status information)
1988 -d List directory entries instead of contents
1989 -e List both full date and full time
1990 -l Use a long listing format
1991 -n List numeric UIDs and GIDs instead of names
1992 -p Append indicator (one of /=@|) to entries
1993 -u With -l: show access time (the time of last
1995 -x List entries by lines instead of by columns
1996 -A Do not list implied . and ..
1997 -C List entries by columns
1998 -F Append indicator (one of */=@|) to entries
1999 -L list entries pointed to by symbolic links
2000 -R List subdirectories recursively
2015 <title>lsmod</title>
2022 List currently loaded kernel modules.
2026 <sect1 id="makedevs">
2027 <title>makedevs</title>
2030 Usage: makedevsf NAME TYPE MAJOR MINOR FIRST LAST [s]
2034 Create a range of block or character special files.
2043 b Make a block (buffered) device
2044 c or u Make a character (un-buffered) device
2045 p Make a named pipe. MAJOR and MINOR are ignored for named pipes
2050 FIRST specifies the number appended to NAME to create
2051 the first device. LAST specifies the number of the last
2052 item that should be created. If 's' is the last
2053 argument, the base device is created as well.
2062 $ makedevs /dev/ttyS c 4 66 2 63
2063 [creates ttyS2-ttyS63]
2064 $ makedevs /dev/hda b 3 0 0 8 s
2065 [creates hda,hda1-hda8]
2071 <title>md5sum</title>
2074 Usage: md5sum [OPTION]... FILE...
2078 Print or check MD5 checksums.
2087 -b Read files in binary mode
2088 -c Check MD5 sums against given list
2089 -t Read files in text mode (default)
2095 The following two options are useful only when verifying
2101 -s Don't output anything, status code shows success
2102 -w Warn about improperly formated MD5 checksum lines
2113 6fd11e98b98a58f64ff3398d7b324003 busybox
2115 6fd11e98b98a58f64ff3398d7b324003 busybox
2116 6fd11e98b98a58f64ff3398d7b324002 busybox
2117 md5sum: MD5 check failed for 'busybox'
2124 <title>mkdir</title>
2127 Usage: mkdir [OPTION]... DIRECTORY...
2131 Create the DIRECTORY(s), if they do not already exist.
2140 -m Set permission mode (as in chmod), not rwxrwxrwx - umask
2141 -p No error if directory exists, make parent directories as needed
2153 /tmp/foo: File exists
2154 $ mkdir /tmp/foo/bar/baz
2155 /tmp/foo/bar/baz: No such file or directory
2156 $ mkdir -p /tmp/foo/bar/baz
2162 <title>mkfifo</title>
2165 Usage: mkfifo [OPTION] NAME
2169 Create a named pipe (identical to 'mknod NAME p').
2178 -m MODE Create the pipe using the specified mode (default a=rw)
2183 <sect1 id="mkfs.minix">
2184 <title>mkfs.minix</title>
2187 Usage: mkfs.minix [OPTION]... NAME [BLOCKS]
2191 Make a MINIX filesystem.
2200 -c Check the device for bad blocks
2201 -n [14|30] Specify the maximum length of filenames
2202 -i Specify the number of inodes for the filesystem
2203 -l FILENAME Read the bad blocks list from FILENAME
2204 -v Make a Minix version 2 filesystem
2210 <title>mknod</title>
2213 Usage: mknod [OPTION]... NAME TYPE MAJOR MINOR
2217 Create a special file (block, character, or pipe).
2226 -m Create the special file using the specified mode (default a=rw)
2236 b Make a block (buffered) device
2237 c or u Make a character (un-buffered) device
2238 p Make a named pipe. MAJOR and MINOR are ignored for named pipes
2248 $ mknod /dev/fd0 b 2 0
2249 $ mknod -m 644 /tmp/pipe p
2255 <title>mkswap</title>
2258 Usage: mkswap [OPTION]... DEVICE [BLOCKS]
2262 Prepare a disk partition to be used as a swap partition.
2271 -c Check for read-ability.
2272 -v0 Make version 0 swap [max 128 Megs].
2273 -v1 Make version 1 swap [big!] (default for kernels > 2.1.117).
2274 BLOCKS Number of block to use (default is entire partition).
2280 <title>mktemp</title>
2283 Usage: mktemp TEMPLATE
2287 Creates a temporary file with its name based on
2288 TEMPLATE. TEMPLATE is any name with six `Xs' (i.e.,
2298 $ mktemp /tmp/temp.XXXXXX
2300 $ ls -la /tmp/temp.mWiLjM
2301 -rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM
2310 Usage: more [FILE]...
2314 Page through text one screenful at a time.
2329 <title>mount</title>
2332 Usage: mount [OPTION]...
2337 or: mount [OPTION]... DEVICE DIRECTORY
2351 -a Mount all filesystems in /etc/fstab
2352 -o One of the many filesystem options listed below
2353 -r Mount the filesystem read-only
2354 -t TYPE Specify the filesystem type
2355 -w Mount the filesystem read-write
2360 Options for use with the -o flag:
2365 async/sync Writes are asynchronous / synchronous
2366 atime/noatime Enable / disable updates to inode access times
2367 dev/nodev Allow / disallow use of special device files
2368 exec/noexec Allow / disallow use of executable files
2369 loop Mount a file via loop device
2370 suid/nosuid Allow / disallow set-user-id-root programs
2371 remount Remount a currently mounted filesystem
2372 ro/rw Mount filesystem read-only / read-write
2377 There are even more flags that are filesystem specific.
2378 You'll have to see the written documentation for those.
2388 /dev/hda3 on / type minix (rw)
2389 proc on /proc type proc (rw)
2390 devpts on /dev/pts type devpts (rw)
2391 $ mount /dev/fd0 /mnt -t msdos -o ro
2392 $ mount /tmp/diskimage /opt -t ext2 -o loop
2401 Usage: mt [OPTION] OPCODE VALUE
2405 Control magnetic tape drive operation.
2414 -f DEVICE Control DEVICE
2423 Usage: mv SOURCE DEST
2428 or: mv SOURCE... DIRECTORY
2433 Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.
2442 $ mv /tmp/foo /bin/bar
2460 Open a pipe to HOST:PORT or listen for a connection on PORT.
2469 $ nc foobar.somedomain.com 25
2470 220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600
2472 214-Commands supported:
2473 214- HELO EHLO MAIL RCPT DATA AUTH
2474 214 NOOP QUIT RSET HELP
2476 221 foobar closing connection
2481 <sect1 id="nslookup">
2482 <title>nslookup</title>
2485 Usage: nslookup [HOST]
2489 Query the nameserver for the IP address of the given
2499 $ nslookup localhost
2513 Usage: ping [OPTION]... HOST
2517 Send ICMP ECHO_REQUEST packets to HOST.
2526 -c COUNT Send only COUNT pings
2527 -s SIZE Send SIZE data bytes in packets (default=56)
2528 -q Quiet mode, only displays output at start and when finished
2539 PING slag (127.0.0.1): 56 data bytes
2540 64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms
2542 --- debian ping statistics ---
2543 1 packets transmitted, 1 packets received, 0% packet loss
2544 round-trip min/avg/max = 20.1/20.1/20.1 ms
2549 <sect1 id="poweroff">
2550 <title>poweroff</title>
2557 Shut down the system, and request that the kernel turn
2558 off power upon halting.
2563 <title>printf</title>
2566 Usage: printf FORMAT [ARGUMENT]...
2570 Format and print the given data in a manner similar to
2571 the C printf command.
2580 $ printf "Val=%d\n" 5
2594 Report process status. This version of ps accepts no
2614 PID Uid Gid State Command
2616 2 root root S [kflushd]
2617 3 root root S [kupdate]
2618 4 root root S [kpiod]
2619 5 root root S [kswapd]
2620 742 andersen andersen S [bash]
2621 743 andersen andersen S -bash
2622 745 root root S [getty]
2623 2990 andersen andersen R ps
2636 Print the full filename of the current working
2653 <title>rdate</title>
2656 Usage: rdate [OPTION] HOST
2660 Get and possibly set the system date and time from a remote HOST.
2669 -s Set the system date and time (default).
2670 -p Print the date and time.
2676 <title>reboot</title>
2688 <title>renice</title>
2691 Usage: renice priority pid [pid ...]
2695 Changes priority of running processes. Allowed priorities range
2696 from 20 (the process runs only when nothing else is running) to 0
2697 (default priority) to -20 (almost nothing else ever gets to run).
2702 <title>reset</title>
2717 Usage: rm [OPTION]... FILE...
2721 Remove (unlink) the FILE(s). You may use '--' to
2722 indicate that all following arguments are non-options.
2731 -i Always prompt before removing each destinations
2732 -f Remove existing destinations, never prompt
2733 -r or -R Remove the contents of directories recursively
2749 <title>rmdir</title>
2752 Usage: rmdir DIRECTORY...
2756 Remove DIRECTORY(s) if they are empty.
2771 <title>rmmod</title>
2774 Usage: rmmod [OPTION]... [MODULE]...
2778 Unload MODULE(s) from the kernel.
2787 -a Try to remove all unused kernel modules
2802 <sect1 id="run-parts">
2803 <title>run-parts</title>
2806 Usage: run-parts [-t] [-a ARG] [-u MASK] DIRECTORY
2810 Run a bunch of scripts in a directory.
2819 -t Test only. It only print the file to be executed,
2820 without execute them.
2821 -a ARG Pass ARG as an a argument to the programs executed.
2822 -u MASK Set the umask to MASK before executing the programs.
2833 Usage: sed [OPTION]... SCRIPT [FILE]...
2837 Allowed sed scripts come in the following form:
2852 NUMBER Match specified line number
2854 /REGEXP/ Match specified regexp
2859 ! inverts the meaning of the match
2868 s/regexp/replacement/[igp]
2869 which attempt to match regexp against the pattern space
2870 and if successful replaces the matched portion with replacement.
2872 which appends TEXT after the pattern space
2877 This version of sed matches full regular expressions.
2886 -e Add the script to the commands to be executed
2887 -n Suppress automatic printing of pattern space
2897 $ echo "foo" | sed -e 's/f[a-zA-Z]o/bar/g'
2903 <sect1 id="setkeycodes">
2904 <title>setkeycodes</title>
2907 Usage: setkeycodes SCANCODE KEYCODE ...
2911 Set entries into the kernel's scancode-to-keycode map,
2912 allowing unusual keyboards to generate usable keycodes.
2916 SCANCODE may be either xx or e0xx (hexadecimal), and
2917 KEYCODE is given in decimal.
2926 $ setkeycodes e030 127
2940 lash -- the BusyBox LAme SHell (command interpreter)
2944 This command does not yet have proper documentation.
2948 Use lash just as you would use any other shell. It
2949 properly handles pipes, redirects, job control, can be
2950 used as the shell for scripts (#!/bin/sh), and has a
2951 sufficient set of builtins to do what is needed. It does
2952 not (yet) support Bourne Shell syntax. If you need
2953 things like ``if-then-else'', ``while'', and such, use
2954 ash or bash. If you just need a very simple and
2955 extremely small shell, this will do the job.
2960 <title>sleep</title>
2967 Pause for N seconds.
2977 [2 second delay results]
2986 Usage: sort [OPTION]... [FILE]...
2990 Sort lines of text in FILE(s).
2999 -n Compare numerically
3000 -r Reverse after sorting
3010 $ echo -e "e\nf\nb\nd\nc\na" | sort
3021 <sect1 id="swapoff">
3022 <title>swapoff</title>
3025 Usage: swapoff [OPTION] [DEVICE]
3029 Stop swapping virtual memory pages on DEVICE.
3038 -a Stop swapping on all swap devices
3044 <title>swapon</title>
3047 Usage: swapon [OPTION] [DEVICE]
3051 Start swapping virtual memory pages on the given device.
3060 -a Start swapping on all swap devices
3073 Write all buffered filesystem blocks to disk.
3077 <sect1 id="syslogd">
3078 <title>syslogd</title>
3081 Usage: syslogd [OPTION]...
3085 Linux system and kernel (provides klogd) logging
3086 utility. Note that this version of syslogd/klogd ignores
3096 -m NUM Interval between MARK lines (default=20min, 0=off)
3097 -n Run as a foreground process
3098 -K Do not start up the klogd process
3099 -O FILE Use an alternate log file (default=/var/log/messages)
3100 -R HOST[:PORT] Log remotely to IP or hostname on PORT (default PORT=514/UDP)
3101 -L Log locally as well as network logging (default is network only)
3111 $ syslogd -R masterlog:514
3112 $ syslogd -R 192.168.1.1:601
3121 Usage: tail [OPTION] [FILE]...
3125 Print last 10 lines of each FILE to standard output.
3126 With more than one FILE, precede each with a header
3127 giving the file name. With no FILE, or when FILE is -,
3137 -n NUM Print last NUM lines instead of last 10
3138 -f Output data as the file grows. This version
3139 of 'tail -f' supports only one file at a time.
3149 $ tail -n 1 /etc/resolv.conf
3159 Usage: tar [MODE] [OPTION] [FILE]...
3167 MODE may be chosen from
3184 f FILE Use FILE for tarfile (or stdin if '-')
3186 exclude FILE File to exclude
3187 v List files processed
3197 $ zcat /tmp/tarball.tar.gz | tar -xf -
3198 $ tar -cf /tmp/tarball.tar /usr/local
3207 Usage: tee [OPTION]... [FILE]...
3211 Copy stdin to FILE(s), and also to stdout.
3220 -a Append to the given FILEs, do not overwrite
3230 $ echo "Hello" | tee /tmp/foo
3239 <title>telnet</title>
3242 Usage: telnet HOST [PORT]
3246 Establish interactive communication with another
3247 computer over a network using the TELNET protocol.
3252 <title>test, [</title>
3255 Usage: test EXPRESSION
3263 Check file types and compare values returning an exit
3264 code determined by the value of EXPRESSION.
3290 <title>touch</title>
3293 Usage: touch [OPTION]... FILE...
3297 Update the last-modified date on (or create) FILE(s).
3306 -c Do not create files
3317 /bin/ls: /tmp/foo: No such file or directory
3320 -rw-rw-r-- 1 andersen andersen 0 Apr 15 01:11 /tmp/foo
3329 Usage: tr [OPTION]... STRING1 [STRING2]
3333 Translate, squeeze, and/or delete characters from stdin,
3343 -c Take complement of STRING1
3344 -d Delete input characters coded STRING1
3345 -s Squeeze multiple output characters of STRING2 into one character
3355 $ echo "gdkkn vnqkc" | tr [a-y] [b-z]
3369 Return an exit code of TRUE (1).
3393 Print the file name of the terminal connected to stdin.
3402 -s Print nothing, only return an exit status
3419 <title>umount</title>
3422 Usage: umount [OPTION]... DEVICE|DIRECTORY
3435 -a Unmount all file systems
3436 -r Try to remount devices as read-only if mount is busy
3437 -f Force filesystem umount (i.e., unreachable NFS server)
3438 -l Do not free loop device (if a loop device has been used)
3454 <title>uname</title>
3457 Usage: uname [OPTION]...
3461 Print certain system information. With no OPTION, same
3471 -a Print all information
3472 -m Print the machine (hardware) type
3473 -n Print the machine's network node hostname
3474 -r Print the operating system release
3475 -s Print the operating system name
3476 -p Print the host processor type
3477 -v Print the operating system version
3488 Linux debian 2.2.15pre13 #5 Tue Mar 14 16:03:50 MST 2000 i686 unknown
3497 Usage: uniq [INPUT [OUTPUT]]
3501 Discard all but one of successive identical lines from
3502 INPUT (or stdin), writing to OUTPUT (or stdout).
3511 -c prefix lines by the number of occurrences
3512 -d only print duplicate lines
3513 -u only print unique lines
3523 $ echo -e "a\na\nb\nc\nc\na" | sort | uniq
3531 <sect1 id="unix2dos">
3532 <title>unix2dos</title>
3535 Usage: unix2dos < unixfile > dosfile
3539 Converts a text file from unix format to dos format.
3545 <title>unrpm</title>
3548 Usage: unrpm < package.rpm | gzip -d | cpio -idmuv
3552 Extracts an rpm archive.
3558 <title>update</title>
3561 Usage: update [OPTION]...
3565 Periodically flush filesystem buffers.
3574 -S Force use of sync(2) instead of flushing
3575 -s SECS Call sync this often (default 30)
3576 -f SECS Flush some buffers this often (default 5)
3582 <title>uptime</title>
3589 Display how long the system has been running since boot.
3599 1:55pm up 2:30, load average: 0.09, 0.04, 0.00
3605 <title>usleep</title>
3612 Pause for N microseconds.
3622 [pauses for 1 second]
3627 <sect1 id="uudecode">
3628 <title>uudecode</title>
3631 Usage: uudecode [OPTION] [FILE]
3635 Uudecode a uuencoded file.
3644 -o FILE Direct output to FILE
3654 $ uudecode -o busybox busybox.uu
3656 -rwxr-xr-x 1 ams ams 245264 Jun 7 21:35 busybox
3661 <sect1 id="uuencode">
3662 <title>uuencode</title>
3665 Usage: uuencode [OPTION] [INFILE] OUTFILE
3678 -m Use base64 encoding as of RFC1521
3688 $ uuencode busybox busybox
3690 M?T5,1@$!`0````````````(``P`!````L+@$"#0```!0N@,``````#0`(``&
3692 $ uudecode busybox busybox > busybox.uu
3698 <sect1 id="watchdog">
3699 <title>watchdog</title>
3702 Usage: watchdog device
3706 Periodically writes to watchdog device B<device>.
3714 Usage: wc [OPTION]... [FILE]...
3718 Print line, word, and byte counts for each FILE, and a
3719 total line if more than one FILE is specified. With no
3729 -c Print the byte counts
3730 -l Print the newline counts
3731 -L Print the length of the longest line
3732 -w Print the word counts
3743 31 46 1365 /etc/passwd
3749 <title>which</title>
3752 Usage: which [COMMAND]...
3772 <title>whoami</title>
3779 Print the user name associated with the current
3796 <title>xargs</title>
3799 Usage: xargs [OPTIONS] [COMMAND] [ARGS...]
3803 Executes COMMAND on every item given by standard input.
3812 -t Print the command just before it is run
3824 $ find . -name '*.c' -print | xargs rm
3833 Usage: yes [STRING]...
3837 Repeatedly output a line with all specified STRING(s),
3846 Usage: zcat [OPTION]... FILE
3850 Uncompress FILE (or stdin if FILE is '-') to stdout.
3859 -t Test compressed file integrity
3874 <chapter id="LIBC-NSS">
3875 <title>LIBC NSS</title>
3878 GNU Libc uses the Name Service Switch (NSS) to configure the
3879 behavior of the C library for the local environment, and to
3880 configure how it reads system data, such as passwords and group
3881 information. BusyBox has made it Policy that it will never use
3882 NSS, and will never use libc calls that make use of NSS. This
3883 allows you to run an embedded system without the need for
3884 installing an /etc/nsswitch.conf file and without /lib/libnss_*
3885 libraries installed.
3889 If you are using a system that is using a remote LDAP server for
3890 authentication via GNU libc NSS, and you want to use BusyBox,
3891 then you will need to adjust the BusyBox source. Chances are
3892 though, that if you have enough space to install of that stuff
3893 on your system, then you probably want the full GNU utilities.
3897 <chapter id="SEE-ALSO">
3898 <title>SEE ALSO</title>
3901 <literal>textutils(1),</literal>
3902 <literal>shellutils(1),</literal>
3907 <chapter id="MAINTAINER">
3908 <title>MAINTAINER</title>
3911 Erik Andersen <andersee@debian.org> <andersen@lineo.com>
3915 <chapter id="AUTHORS">
3916 <title>AUTHORS</title>
3919 The following people have made significant contributions to
3920 BusyBox -- whether they know it or not.
3924 Erik Andersen <andersee@debian.org>
3928 Edward Betts <edward@debian.org>
3932 John Beppu <beppu@lineo.com>
3936 Brian Candler <B.Candler@pobox.com>
3940 Randolph Chung <tausq@debian.org>
3944 Dave Cinege <dcinege@psychosis.com>
3948 Karl M. Hegbloom <karlheg@debian.org>
3952 Daniel Jacobowitz <dan@debian.org>
3956 Matt Kraai <kraai@alumni.carnegiemellon.edu>
3960 John Lombardo <john@deltanet.com>
3964 Glenn McGrath <bug1@netconnect.com.au>
3968 Bruce Perens <bruce@perens.com>
3972 Chip Rosenthal <chip@unicom.com>, <crosenth@covad.com>
3976 Pavel Roskin <proski@gnu.org>
3980 Gyepi Sam <gyepi@praxis-sw.com>
3984 Linus Torvalds <torvalds@transmeta.com>
3988 Mark Whitley <markw@lineo.com>
3992 Charles P. Wright <cpwright@villagenet.com>
3996 Enrique Zanardi <ezanardi@ull.es>
4001 </book> <!-- End of the book -->