两套实用程序——GNU Core Utilities 和 util-linux
——构成了 Linux 系统管理员最基本和最常用的许多工具。它们的基本功能允许系统管理员执行管理 Linux 计算机所需的许多任务,包括管理和操作文本文件、目录、数据流、存储介质、进程控制、文件系统等等。
这些工具是不可或缺的,因为没有它们,就不可能在 Unix 或 Linux 计算机上完成任何有用的工作。鉴于它们的重要性,让我们来了解一下它们。
GNU coreutils
为了理解 GNU Core Utilities 的起源,我们需要乘坐时光机回到贝尔实验室 Unix 的早期。Unix 的编写是为了让 Ken Thompson、Dennis Ritchie、Doug McIlroy 和 Joe Ossanna 能够继续他们在从事一个名为 Multics 的大型多任务和多用户计算机项目时开始做的事情。那件小事是一个名为太空旅行的游戏。正如今天仍然如此,似乎总是游戏玩家推动了计算机技术的发展。这个新的操作系统比 Multics 更加有限,因为一次只能有两个用户登录,所以它被称为 Unics。这个名字后来改为 Unix。
随着时间的推移,Unix 变得非常成功,以至于贝尔实验室开始基本上将其赠送给大学,后来又以媒体和运输成本的价格赠送给公司。在那些日子里,系统级软件在组织和程序员之间共享,因为他们在系统管理的背景下努力实现共同目标。
最终,AT&T 的 PHB 决定他们应该通过 Unix 赚钱,并开始使用更严格且更昂贵的许可。这种情况发生在软件变得更加专有、受限制和封闭的时代。与其他用户和组织共享软件变得不可能。
有些人不喜欢这样,并用自由软件与之抗争。Richard M. Stallman,又名 RMS,领导了一群反叛者,他们试图编写一个开放且免费可用的操作系统,他们称之为 GNU 操作系统。这个小组创建了 GNU Utilities,但没有生成可用的内核。
当 Linus Torvalds 首次编写和编译 Linux 内核时,他需要一套非常基本的系统实用程序才能开始执行稍微有用的工作。内核不提供命令或任何类型的命令 shell,例如 Bash。它本身是无用的。因此,Linus 使用了免费提供的 GNU Core Utilities 并为 Linux 重新编译了它们。这给了他一个完整的,如果非常基本的操作系统。
您可以通过在终端命令行输入命令 info coreutils
来了解构成 GNU Utilities 的所有单独程序。以下核心实用程序列表是该信息页面的一部分。这些实用程序按功能分组,以便更容易找到特定的实用程序;在终端中,突出显示您想要更多信息的组,然后按 Enter 键。
* Output of entire files:: cat tac nl od base32 base64
* Formatting file contents:: fmt pr fold
* Output of parts of files:: head tail split csplit
* Summarizing files:: wc sum cksum b2sum md5sum sha1sum sha2
* Operating on sorted files:: sort shuf uniq comm ptx tsort
* Operating on fields:: cut paste join
* Operating on characters:: tr expand unexpand
* Directory listing:: ls dir vdir dircolors
* Basic operations:: cp dd install mv rm shred
* Special file types:: mkdir rmdir unlink mkfifo mknod ln link readlink
* Changing file attributes:: chgrp chmod chown touch
* Disk usage:: df du stat sync truncate
* Printing text:: echo printf yes
* Conditions:: false true test expr
* Redirection:: tee
* File name manipulation:: dirname basename pathchk mktemp realpath
* Working context:: pwd stty printenv tty
* User information:: id logname whoami groups users who
* System context:: date arch nproc uname hostname hostid uptime
* SELinux context:: chcon runcon
* Modified command invocation:: chroot env nice nohup stdbuf timeout
* Process control:: kill
* Delaying:: sleep
* Numeric operations:: factor numfmt seq
此列表上有 102 个实用程序。它涵盖了在 Unix 或 Linux 主机上执行基本任务所需的许多功能。但是,许多基本实用程序都缺失了。例如,mount
和 umount
命令不在列表中。那些以及 GNU coreutils 中没有的许多其他命令都可以在 util-linux
集合中找到。
util-linux
util-linux
实用程序包包含系统管理员使用的许多其他常用命令。这些实用程序由 Linux 内核组织分发,几乎所有这 107 个命令最初都是三个独立的集合——fileutils
、shellutils
和 textutils
——它们在 2003 年合并成单个包 util-linux
。
agetty fsck.minix mkfs.bfs setpriv
blkdiscard fsfreeze mkfs.cramfs setsid
blkid fstab mkfs.minix setterm
blockdev fstrim mkswap sfdisk
cal getopt more su
cfdisk hexdump mount sulogin
chcpu hwclock mountpoint swaplabel
chfn ionice namei swapoff
chrt ipcmk newgrp swapon
chsh ipcrm nologin switch_root
colcrt ipcs nsenter tailf
col isosize partx taskset
colrm kill pg tunelp
column last pivot_root ul
ctrlaltdel ldattach prlimit umount
ddpart line raw unshare
delpart logger readprofile utmpdump
dmesg login rename uuidd
eject look renice uuidgen
fallocate losetup reset vipw
fdformat lsblk resizepart wall
fdisk lscpu rev wdctl
findfs lslocks RTC Alarm whereis
findmnt lslogins runuser wipefs
flock mcookie script write
fsck mesg scriptreplay zramctl
fsck.cramfs mkfs setarch
其中一些实用程序已被弃用,并且将来可能会从集合中删除。您应该查看 维基百科的 util-linux
页面 以获取有关许多实用程序的信息,并且手册页也提供了有关命令的详细信息。
总结
这两个 Linux 实用程序集合,GNU Core Utilities 和 util-linux
,共同提供了管理 Linux 系统所需的基本实用程序。在研究这篇文章时,我发现了一些我从未听说过的有趣实用程序。这些命令中的许多命令很少需要,但是当您需要它们时,它们是不可或缺的。
在这两个集合之间,有 200 多个 Linux 实用程序。虽然 Linux 有更多的命令,但这些是管理典型 Linux 主机的基本功能所需的命令。
6 条评论