Linux简介及系统文件目录介绍
一直说是写点东西,但是一拖再拖,总是为自己找各种各样的借口。直到最近看linux基础今天才想着把看到的东西记一下,以便自己以后学习及复习使用。如果可以帮助大家那就更好不过了。刚开始写如果有哪里写的不合理,或者和各位有冲突的地方请通知一声,谢谢大家!
计算机基本组成
要说Linux就必须要说说我们现在随处可见的电脑了。关于电脑的硬件组成部分,我们可以用自己的电脑进行分析一下主要可分为下面三个部分:
1.输入单元:键盘、鼠标、读卡器、触控屏。
2.主机部分:主要组成部分,里面有一堆电子元件和电路板、CPU与内存等。
3.输出单元:屏幕、打印机等
整台电脑最主要的就是一块主板,上面装了中央处理器(CPU)、内存、硬盘、还有一些适配器设备。而在主板中最重要的就是中央处理器(Central Processing Unit,CPU),CPU为一个具有特定功能的芯片,里面含有大量的指令集。其主要功能在于管理与运算,因此CPU内可又被分为算术逻辑单元与控制单元。所以整台电脑的元件大体关联如图1:
介绍完电脑基本组成部分,下面就该是正主了,那么Linux到底是什么东西呢?
我们知道计算机光有硬件的时候除了会电人,那就一无是处了。为了有效的应用这些硬件资源于是就有了操作系统。和我们平时见的最多Windows操作系统一样,Linux是在计算机上运行的,所以Linux就是一组软件是操作系统。如图2所示,Linux就是内核与系统调用那两层,应用程序不包含Linux范围之内的。
Linux的前世今生
早在Linux出现的前二十年(20世纪70年代左右),就有一个成熟的操作系统,那就是Linux的大哥UNIX。那么他们之间有什么联系呢?我们下面一起来看看。
早期计算机并不像现在这么普遍,而且大多是用于军事和科研单位,输入设备只有读卡机,输出设备也只有打印机。为了更好的利用计算机的硬件资源60年代麻省理工学院发展了:兼容分时系统,他可以提供多终端进入主机,但是终端并不具有计算能力,说是多终端但最多也仅仅只是30个左右。后来Bell实验室提出了Mutics系统计划,计划目的是想让大型主机提供300个以上的终端同时工作,不过后来由于资金短缺导致计划破产。但是原来参与该计划的人员从中受到了启发,Ken Thompson及时其中的一位。他编写了一组内核程序以及一个小小的文件系统,这个系统就是UNIX的原形。
1973年UNIX正式诞生是有Ritchie等人用C语言写出的第一个正式UNIX内核,当时由于Thompson写系统太好用了,但是是由汇编语言写的(一种专一性的机器语言),所以移植性并不好所以Thompson和Ritchie合作想用高级语言来编写,所以用C语言(当时没有C语言,C语言是B语言改写成的,所以也创造了C语言)改写并编译了Unics的内核,并命名发行了UNIX的正式版本。
由于UNIX发行后很火,所以AT&T(Bell实验室属于该公司)将UNIX的版权收回,在1979年发行了第七版,并且特别提出“不可对学生提供源代码”的严格限制。由于这个限制当时学校没办法再教授UNIX内核代码的相关知识,如果没有源代码学生怎么认识不了UNIX?当时Andrew S.Tanenbaum自己动手写了Minix这个UNIX-like的内核程序。在编写过程中为了版权纠纷完全不参照UNIX的内心程序并在1980年发行出版。
Linus Torvalds出生于计算机世家,1988年进入大学接触到UNIX,由于当时大学只有一台最新的UNIX系统,而且学生很多满足不了他的学习,于是 Linus Torvalds就想自己搞一个UNIX来玩,有了这个想法以后当时又Minix内核系统的诞生结合GNU计划(是一个开源软件计划,其中有许多人贡献开源软件)中的一些工具软件这样Linux在1991年诞生了。(不得不感叹前辈的能力啊,说创造语言就创造语言,说写系统写系统啊)
Linux的来历基本上就是这样,下面我们看看Linux的文件目录结构(如果需要安装Linux同学可以网上找找,这里就不提供了)
Linux的文件目录结构
很长一段时间都很困惑Linux系统中的各个文件夹都用来放什么的,感觉哪儿都不敢动,而且依照网上装的软件都找不到在哪儿,呜呼哀哉!也许这就是对未知事物的恐惧吧。不知道同学们有没有同感,直到前两天看书才明白各个文件夹的用途。文件目录如图3所示:
Linux的目录配置是已根据FHS的标准进行创建分配的,主要目的是希望让用户可以了解到已安装的软件通常放置在哪个目录下。事实上FHS针对目录树架构仅定义出三层目录下面应该放置什么数据而已,分别是下面这三个目录定义:
1. /(root,根目录):与系统启动过程有关;
2. /usr(unix software resource):与软件安装执行有关;
3. /var(variable):与系统运行过程有关;
至于为什么仅仅定义出这个目录,我们知道肯定是有意义的,我们一起来看看吧!
根目录(/)的意义与内容:根目录是整个系统中最重要的一个目录,不但所有的目录都是由根目录衍生出来的,同时根目录还与启动、还原、系统修复等操作有关。
第一层FHS目录设置
1.FHS要求必须存在的目录
/bin:系统有很多存放执行文件的目录,但是/bin比较特殊。因为/bin放置的是在单人维护模式下还能被执行的内容。如:cat、chmod、chown、mv等常用命令。
/boot:这个目录主要放置启动会使用到的文件,包括Linux内核文件以及启动选项所需要的配置文件等。
/dev:在Linux系统中,任何设备和接口设备都是以文件形式存放于这个目录当中,你只要通过读写这个目录下的文件,就等于读写某一个设备,比较重要的有/dev/null、/dev/zero、/dev/sd*等。
/etc:系统中主要的配置文件几乎都存放在这个目录当中,如:人员账号的密码文件、各种服务的启动文件。通常该目录下的文件是可以让一般用户查看的,只有root用户有权限去修改。
/lib:系统的函数非常多,而/lib放置的真是在启动时会用到的函数库,以及/bin或/sbin下面会调用的函数。
/media:media媒体的意思,顾名思义,这个/media下放置的就是可被移除的设备。如:软盘,光盘等。
/mnt:如果你要暂时挂在某些设备,一般建议放置在这个目录中,在早期的时候这个目录的用途与/media相同,只是在/media出现以后,这个目录就用来挂在使用。
/opt:这主要是给第三方辅助软件放置的目录。如:桌面程序,扩展功能,tomcat,mysql。不过以前的Linux习惯安装在/usr/local目录下。
/run:早期的FHS规定系统启动后所产生的各项信息应该放置到/var/run目下,最新标准则修改到/run目录下,因为/run可以用内存来模拟所以性能会好很多。
/sbin:Linux系统中有很多命令用来设置系统环境的,这些命令只有root才有权限执行,其他用户只能查询。
/srv:srv可以视为service的缩写,是某些网路服务启动后,这些服务所需要使用的数据目录。如:WWW,FTP等
/tmp:让一般用户或正在执行的程序暂时存放文件的地方。
/usr:下面第二层FHS目录介绍。
/var:下面第二层FHS目录介绍。
2. FHS建议可选存在的目录
/home:这是系统默认用户的家目录,在新增一个一般用户的时,默认的用户家目录就会创建在这里。
/root:系统管理员root的家目录,之所以放在这里是不放在home下是因为如果计入单人维护模式而仅仅挂载根目录是root用户可以使用该目录。
第二层FHS目录设置
1.FHS要求必须存在的目录
/usr/bin:所有一般用户能够使用的命令都放在这里,CentOS7已将全部的用户命令放置于此,使用链接文件将/bin目录发送至此。所以/bin和/usr/bin内容是一模一样的。
/usr/lib:基本上与/lib目录的功能相同,使用链接文件将/lib目录发送至此
/usr/local:系统管理员在本机安装自己下载的软件,建议安装到本目录,这样便于管理。当然也可以放在opt目录中。该目录下也有对应的bin、etc、include、lib等子目录是针对安装软件运行。
/usr/sbin:非系统正常所需的命令,通常是网络服务软件的服务命令。不过基本功能和/sbin差不多,所/sbin目录目前也是连接到此目录当中。
/usr/share:主要放置的是只读文件,也包括共享文件。这个目录下放置的几乎都是文本文件。
/var/cache:应用程序本身运行过程中会产生的一些缓存。
/var/lib:程序本身执行过程中需要使用到的数据文件放置该目录,在这个目录下各自的软件有各自的目录。如:mysql的数据库放置在/var/lib/mysql中。
/var/lock:某些设备或文件资源一次只能被一个程序使用,因此就需要为该设备上锁以确保程序的正常执行。目前此目录已经被连接到/run/lock目录中了。
/var/log:这是日志文件的放置目录。
/var/mail:放置个人邮箱的目录,不过这个目录也被放到/var/spool/mail目录中了,通常这两个目录相互链接。
/var/run:某些程序或服务启动后会将他们PID放置到该目录下,与/run目录相同,这个目录链接到/run目录中。
/var/spool:这个目录通常放置一些队列数据,这些数据使用后会被删除。
2. FHS建议可选存在的目录
/usr/games:与游戏相关的数据放置此目录。
/usr/include:C++等程序的头文件与包含文件放置处。
/usr/libexec:某些不被一般用户常用的执行文件或脚本存放在该目录。
/usr/src:一般源代码建议放置在此目录。
事实上FHS针对目录所定义的标准就是上面的全部内容,不过我们Linux下面还有许多的目录,我们也一起来了解一下:
/lost+found:这个目录是使用标准的ext2、ext3、ext4文件格式才会产生的一个目录,目的是当系统发生错误时,将一些遗失的片段放置到该目录下。不过使用xfs文件系统不会产生该目录。
/proc:这个目录本身是一个虚拟文件系统,他放置的数据都是在内存当中。如系统内核,进程信息。
/sys:这个目录和/proc穆了相似也是一个虚拟文件系统,记录硬件相关的信息。
Linux系统以及各个目录主要的作用意义都已经说完了。下一章我们将介绍Linux权限和常用命令。
扩展阅读:《鸟哥的Linux私房菜》
GNU计划:http://www.gnu.org/software/xorriso/
FHS标准:https://baike.baidu.com/item/FHS/1501738