Linux实用程序是内核/ shell的一部分吗?

比如cp,ls,grep,ps ……

它们是预先安装在操作系统上的独立应用程序还是操作系统的固有部分?

在Ubuntu中,你会发现安装了Coreutils 。

该软件包包含预期存在于每个操作系统上的基本文件,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 runco​​n 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谁是的

核心GNU实用程序

您将从Core Utilities描述页面中找到大多数基本命令,表示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操作系统 ,它们中的任何一个都是独立的并没有多大帮助。

Shell基本上是内核和用户之间的桥,一个命令解释器 ,用户可以在其中键入命令,命令被传送到内核并执行。它与内核不同,请参考下面的基本图像

在此处输入图像描述

并为更具描述性的形象

在此处输入图像描述

文件管理器主要构成通用核心实用程序的前端。


那天生的事情怎么会发生呢,因为,

Linux是单片内核 ,其中所有服务(文件系统,VFS,设备驱动程序等)以及核心function(调度,内存分配等)都是共享相同空间的紧密组织。 它提供了到工作稳定内核的最短路径。 Memory, Process and Device managing是任何内核的function。

在如何理解Ubuntu文件系统布局中还提供了非常好的描述?

与图书馆有关的补充

GNU C库GCC GNU编译器集合Ubuntu / Linux操作系统最重要的库和核心要求。 其中一个原因是Kernel使用汇编语言编写了C语言中的Primary和使用硬件特定代码。

在某种程度上"OS is made up of two parts, ie, Kernel and Shell" ,例如服务器和基于Minimal Linux的Distros。 但是对于一个完全成熟的Ubuntu桌面,你需要的不仅仅是内核和shell。

Gtk (Gnome)基于C和C ++, Qt (Kde)主要使用C ++,我猜他们没有任何共同的库。 这就是为什么他们提供不同的用户体验。

对于实用程序 (软件包),您会发现在Ubuntu和Ubuntu-distros中预安装了Python,以便为基于python的应用程序(如我猜的Window Manager)和Scripts提供扩展function。 正如我早些时候提到的那样"They together actually forms Ubuntu/Linux Operating System , Either of them existing standalone doesn't help much."

您可以进一步参考问题如何知道我的桌面环境中的应用程序是否正在加载其他DE的模块,库等? 。

Linux只是一个内核,允许您使用ELF头运行可执行文件。 它只包含引导所需的最重要文件 – 本身,并调用init ,这可能只是加载upstart 。 然而,重要的是,即使是最基本的实用程序也需要它。

init负责启动登录提示,可以将其视为“操作系统的固有部分”。 它将加载一个shell。 虽然正确使用Linux是必要的,但它不是内核的一部分,但仍然非常天生。 一些命令是此shell的一部分,可在/usr/bin/bin/sbin作为可执行文件使用。 psgrep是单独的可执行文件,不一定是“固有的”。 我认为“操作系统固有部分”的完整列表:

  • 内核(Linux)
  • 文件系统驱动程序(仅安装根文件系统, /bin/sbin所需的sysfsmount和驱动程序)
  • 执行“任何事情”所必需的登录shell,其中包括/bin//sbin/usr/bin未包含的基本命令。
  • /bin/sbin许多命令。
  • 有效地, libc ,几乎每个程序都使用它。
  • 获取任何磁盘或其他关键硬件所需的驱动程序
  • 根据Debian软件包策略, dpkg (及其依赖项)是必不可少的,因为它们允许人们获得额外的实用程序,尽管可以从外部媒体引入重要的可执行文件

诸如ls,grep,cat和许多其他命令行工具构成了’GNU coreutils’,它是任何GNU / Linux系统上的标准工具集。 有关实用程序的非常有用的摘要以及如何使用它们,请在终端中输入:

 info coreutils 

要将其输出到文件:

 info coreutils > coreutils.txt 

(在回答您的其他问题时,它们不是内核的一部分或集成在其中。它们在您的终端shell会话中用作实现您想要做的工具。)