![Linux 实用程序是内核/shell 的一部分吗?](https://linux22.com/image/820953/Linux%20%E5%AE%9E%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%98%AF%E5%86%85%E6%A0%B8%2Fshell%20%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%E5%90%97%EF%BC%9F.png)
例如cp、ls、grep、ps……
它们是预装在操作系统上的独立应用程序还是操作系统固有的部分?
答案1
在 Ubuntu 中你会发现核心工具已安装。
这个软件包包含每个操作系统上都应存在的基本文件、shell 和文本操作实用程序。
具体来说,该软件包包括: arch base64 basename cat chcon chgrp chmod chown chroot cksum comm cp csplit cut date dd df dir dircolors dirname du echo env expand expr factor false flock fmt fold groups head hostid id install join link ln logname ls md5sum mkdir mkfifo mknod mktemp mv nice nl nohup nproc od paste pathchk pinky pr printenv printf ptx pwd readlink rm rmdir runcon sha*sum seq shred sleep sort split stat stty sum sync tac tail tee test timeout touch tr true truncate tsort tty uname unexpand uniq unlink users vdir wc who whoami yes
核心 GNU 实用程序。
你会发现大多数基本命令来自核心实用程序描述页面,表示,Linux只是一个名称核心, 然而Ubuntu是此类实用程序的完整高级集成操作系统。如问题中所述Such as cp, ls, grep, ps...
Are they stand-alone applications pre-installed on the operating
system or the innate part of the operating system?
它们实际上一起形成了Ubuntu/Linux 操作系统, 它们其中任何一个单独存在都没有多大帮助。
壳基本上是桥梁核心以及用户命令解释器用户可以在其中输入命令,命令将传达给内核并执行。它与内核不同,请参阅下面的基本图像
更具描述性的图片
文件管理器主要构成通用核心实用程序的前端。
那么innate
事情是怎么发生的呢?这是因为,
Linux是单片内核 其中所有服务(文件系统、VFS、设备驱动程序等)以及核心功能(调度、内存分配等)都是共享同一空间的紧密结合的组。它为工作稳定的内核提供了最短路径。而Memory, Process and Device managing
任何内核的功能都是如此。
这里也提供了很好的描述如何了解Ubuntu文件系统布局?
与库相关的添加-
这GNU C 库和GCC GNU 编译器集合是最重要的图书馆和核心要求Ubuntu/Linux 操作系统其中一个原因是核心写在小学C以及使用汇编语言的硬件特定代码。
在某种程度上"OS is made up of two parts, i.e., Kernel and Shell"
确实如此,例如服务器和基于最小 Linux 的发行版。但对于功能齐全的 Ubuntu 桌面,您需要的不仅仅是内核和 Shell。
鍵盤(Gnome)基于 C 和 C++,Qt我猜想 (Kde) 主要使用 C++,它们没有任何共同的库。这就是它们提供不同用户体验的原因。
为了公用事业(软件包),你会发现 Ubuntu 和 Ubuntu-distros 中预装了 Python,为基于 Python 的应用程序提供扩展功能(我猜像窗口管理器一样)和脚本。正如我之前提到的"They together actually forms Ubuntu/Linux Operating System , Either of them existing standalone doesn't help much."
您可以进一步参考问题我如何知道我的桌面环境中的应用程序是否正在加载其他 DE 的模块、库等?。
答案2
Linux 只是一个内核,允许您运行带有 ELF 头的可执行文件。它仅包含启动所需的最重要的文件——它本身,以及init
可能仅加载的调用upstart
。但是,它很重要,因为它是获取最基本的实用程序所必需的。
init
负责启动登录提示符,这可以视为“操作系统的固有部分”。它将加载 shell。而必要的对于 Linux 的正确使用,它不是内核的一部分,但仍然是固有的。一些命令是此 shell 的一部分,可作为可执行文件在/usr/bin
、/bin
或中使用/sbin
。ps
和grep
是单独的可执行文件,不一定是“固有的”。我认为“操作系统的固有部分”的完整列表:
- 内核(Linux)
- 文件系统驱动程序(仅限
sysfs
、mount
和挂载根文件系统所需的驱动程序 、/bin
和/sbin
、) - 登录 shell,执行“任何操作”所必需的,包括
/bin/
、/sbin
或中未包含的基本命令/usr/bin
。 /bin
和中有很多命令/sbin
。- 确实如此
libc
,因为几乎每个程序都使用它。 - 使任何磁盘或其他关键硬件正常工作所需的驱动程序
- 根据 Debian 软件包政策,
dpkg
(及其依赖项)是必不可少的,因为它们允许人们获得额外的实用程序,尽管人们可以从外部媒体引入重要的可执行文件
答案3
ls、grep、cat 等命令行工具和许多其他工具构成了“GNU coreutils”,它是任何 GNU/Linux 系统上的标准工具集。要获得这些实用程序的非常有用的摘要以及如何使用它们,请在终端中输入以下内容:
info coreutils
将其输出到文件:
info coreutils > coreutils.txt
(回答您的另一个问题,它们不是内核的一部分,也没有集成在内核中。它们在您的终端 shell 会话中用作实现您想要执行的操作的工具。)