linux系统基本结构

1、目录结构 经典树形目录 linux系统设计中最优秀的特性之一就是将所有内容都以文件的形式展现出来,通过一个树形结构统一管理和组织这些文件 整个文件系统有个“根”(root),然后在整个根上分出很多“杈”(也可以创建目录),每个“杈”下又分出“杈”,即每个“杈”下还可以继续分出“杈”,同时“杈”上也可以长出“叶子”(即可以创建和存放文件) 使用tree工具列出/分区下面的目录: root@dongni:/# tree -L 1 . |-- bin |-- boot |-- dev |-- etc |-- home |-- lib |-- lib64 |-- media |-- mnt |-- opt |-- proc |-- root |-- run |-- sbin |-- srv |-- sys |-- tmp |-- usr `-- var 19 directories, 0 files root@dongni:/# 图示: 整个linux系统以文件的形式全部存放在根目录下,同时将所有文件分类,分级分层组织在一起,这样就形成了一个树形目录结构,linux文件系统的树形目录结构给管理文件带来很大的方便 目录功能介绍 很多linux的发行版目录结构布局都遵循 FSSTND 标准,这一标准的特点是根目录非常简洁,只包含系统最基本的文件。遵循这一标准,有利于程序的编写和移植,也便于系统管理和维护 /etc 主要用于存放系统管理相关的配置文件以及子目录 passwd:用户库文件、每个用户的用户名、UID、GID和工作目录等等 shadow:存放用户密码的文件,每个用户的密码加密后都放入此文件 group :主要存储用户组信息 fstab :系统开机启动自动挂载分区列表,需要设置开机自动挂载的分区,都可以在此文件加入 systemd:systemd的配置文件目录,是CentOS7.x/Ubuntu16.04.03LTS server版本之后新增目录,此目录是linux启动的重要部分,用来完成对整个系统的基本初始化配置 systemd/system/*.wants:此目录包含所有服务器启动脚本,开机时系统将自动启动这些服务 hosts :设定用户自己的IP与名字的对应表,类似于Windows下面的hosts文件 resolv.conf:客户端DNS配置文件 sysconfig/network-scripts/ifcfg-eth0:IP地址配置文件,CentOS7.x版本之后网卡名从eth0的标识变为enp0s3、ens33等等 X11 :X-Window 的配置文件 rsyslog.conf:系统日志输出配置文件,在CentOS 5.x版本以及之前版本中对应的文件是syslog.conf,CentOS 6.x版本以及以后版本中时 rsyslog.conf文件 crontab :系统级别的守护进程配置文件 sysctl.conf:系统内核参数配置我呢间,在CentOS 7.x版本之后,内核参数配置文件转移到了 /usr/lib/sysctl.d目录下,但是sysctl.conf文件仍有效,并且可覆盖 /usr/lib/sysctl.d/ 中的配置 services :定义系统服务与端口的对应关系 profile :系统全局环境变量配置文件 /usr 主要存放应用程序和文件。如果在系统安装的时候选择了很多软件包,那么这些软件包默认会安装到此目录下,平时安装的一些软件默认情况下也会安装到此目录内 bin:使用者可执行的二进制文件 include:包含C语言的头文件,文件扩展名大多Wie.h lib:函数库目录 local:存放本地安装的软件和其他文件,与linux系统无关 sbin:存放系统管理员才能执行的指令 share:存放共享的文件和数据库 src:包含所有程序的源代码,其中主要是linux核心程序源代码 /var 主要存放系统运行以及软件运行的日志信息 log:存放各种应用程序的日志文件,文件是变动的,需要定期清理 lib :存放系统正常运行时需要改变的库文件 spool:是mail、new、打印机队列和其它队列输入、输出的缓冲目录 tmp:运行比/tmp存放更大的文件 lock:存放被锁定的文件,很多程序都会在/var/lock下产生一个锁文件,以保证其他程序不能同时使用这个设备或文件 local:存放/usr/local中所安装程序的可变数据 account:存放已经格式化的man页 run:包含到下次系统启动前的系统信息 /dev 包含系统所有的设备文件 /proc 是一个虚拟目录,目录中所有信息都是内存的映射,通过这个虚拟的内存映射没有了,可以和内核内部数据结构进行交互,获取有关进程的有用信息,同时也可以在系统运行中修改内核参数。与其他目录不同,/proc存在于内存中,而不是硬盘上 其他目录 2、系统核心组成 完整的linux内核一般由5个部分组成,分别是内存管理、进程管理、进程间通信、虚拟文件系统和网络结构 内存管理 解决如何合理有效地管理整个系统的物理内存,同时快速相应内核各个子系统对内存分配的请求 。 linux内存管理支持虚拟内存,即在系统上运行的所有程序占用的内存总量可以大于实际物理内存,而多余出的这部分内存就是通过磁盘申请得到的,平时系统只把当前运行的程序块保留在内存中,其它程序块则保留在磁盘中。 在内存紧缺时,内存管理负责在磁盘和内存间交换程序块 进程管理 主要控制系统进程对CPU的访问,当需要某个进程运行时,由进程调度器根据基于优先级的调度算法启动新的进程,linux支持多任务运行。单个CPU支持多任务由进程调度管理来完成的。在系统运行时,每个进程都会分得一定的时间片,然后进程调度器根据时间片的不同,选择每个进程依次运行。由于切换的时间和频率都非常快,用户是感觉到多个程序在同时运行。实际上,CPU在同一时间内只有一个进程在运行 进程间通信 主要用户控制不同进程之间在用户空间的同步、数据共享和交换。由于不同的用户进程拥有不同的进程空间,因此进程间的通信要借助于内核的中转来实现。一般情况下,当一个进程等待硬件操作完成时,它会被挂起。当硬件操作完成后,进程被恢复执行,而协调这个过程的就是进程间的通信机制 虚拟文件系统 linux内核中的虚拟文件系统用一个通用的文件模型表示各种不同的文件系统,这个文件模型屏蔽了很多具体文件系统的差异,使linux内核支持很多不同的文件系统。虚拟文件系统可以分为逻辑文件系统和设备驱动程序。逻辑文件系统指linux所支持的文件系统,如ext2/ext3/xfs/fat等,设备驱动程序指为每一种硬件控制器所编写的设备驱动程序模块 网络接口 提供了对各种网络标准的实现和各种网络硬件的支持。网络接口一般分为网络协议和网络设备驱动程序。网络协议部分负责实现每一种可能的网络传输协议。网络设备驱动程序则主要负责与硬件设备进行通信,每一种可能的网络硬件设备都有相应的设备驱动程序 3、运行机制介绍 初始化init系统 系统的运行级别 系统的关闭方法 linux初始化init系统 linux操作系统的启动首先从BIOS开始,接下来linux引导程序将内核映像加载到内存,进行内核初始化,内核初始化的最后一步就是启动PID为1的init进程。这个进程是系统的第一个进程,它负责产生其他所有用户进程 仅仅将内核运行起来是毫无用户的,因此就需要一个系统能够定义、管理和控制init进程的行为,并负责组织和运行许多独立的或相关的初始化工作,从而让系统进入一个用户设定的运行模式重,这个系统就是init系统 大多数linux发行版的init系统是和System V相兼容的,因此称为sysvinit。这也是最早最流行的init系统,CentOS7.x发行版之前的系统中都采用sysvinit;sysinit概念简单清晰,主要依赖于shell脚本,但它一次一个串行地启动进程,这导致了它的最大弱点:启动太慢。虽然在服务器上这个缺点不算什么,但是当linux被应用到移动终端设备上时,这个缺点就变成了大问题。为了能更快地启动系统,开发者对sysvinit进行了不断的改进,先后出现了upstart和systemd这两个主要的新一代init系统,以Ubuntu为代表的linux发行版就采用的是upstart方式,而在CentOS 7.x版本中,已经默认开始采用systemd来管理系统 runlevel 到target的改变 target的命名类似于“multi-user.target“这种形式,比如原来的运行级别3(runlevel3)对应于新的多用户目标,”multi-user.target“,运行级别5(runlevel5)就对应于”graphical.target“。因为systemd机制中不再使用runlevel的概念,所以/etc/inittab也不再被系统使用 在新的systemd管理体系里,默认的target(相当于以前的默认运行级别)通过软连接来实现 CentOS 7.x 默认是启动图形界面: ll /etc/systemd/system/default.target /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target 可以更改为3模式(其实234均为multi-user.target): rm /etc/systemd/system/default.target ln -s /lib/systemd/system/multi-user.target default.target 5中target模式: runlevel0 poweroff.target 关机模式 runlevel1 rescure.target 单用户/救援模式 runlevel2 multi-user.target 多用户模式 runlevel3 runlevel4 runlevel5 graphical.target 图形界面多用户模式 runlevel6 reboot.target 重启系统模式 4、系统关机过程 shutdown 可以完全地关闭linux系统 shutdown命令用shell编写的脚本,必须由root用户执行 shutdown执行后,会以广播的形式通知正在系统中工作的所有用户,系统将在指定的时间内关闭 请保存文件,停止作业,注销用户 此时login命令被冻结,新的用户不能登录 当所有用户从系统中注销或者指定时间已到时,shutdown就发送信号给init程序,要求init程序改变系统运行级别 接着,init程序根据shutdown指令传递过来的参数,相应地改变运行级别。0-关机,6-重启 halt 是最简单的关机命令,相当于”shutdown -h“ 执行之后,虚拟机(VMware)会提示:”客户操作系统已禁用CPU。请关闭或充值虚拟机“ 执行halt时,将终止所有应用陈谷,然后调用系统指令sync sync将所有内存信息通过文件系统写入硬盘,然后停止内核 halt指令在执行时,会首先检测系统的运行级别,如果运行级别为0或6,则立即关闭系统,否则调用shutdown来关闭系统 reboot 执行过程与halt基本类似,用于系统重启 init 主要用于系统不同运行级之间的切换,切换的工作是理解完成的 5、系统服务管理工具 systemd 完成系统的初始化工作 对系统和服务进行管理 systemd仍然兼容sysvinit和linux标准组的启动脚本 /etc/rc.d/init.d/目录中的bash初始化脚本管理服务,被以”.service“文件扩展结尾的服务单元替换,提供了与初始化脚本相同的用途 systemd的命令行工具:systemctl,可看作是service和chkconfig的组合体 systemctl命令开业用来查看、启动、停止、重启、启动或者禁用系统服务 启动/停止/查看:systemctl start/stop/status httpd.service 禁用/启用: systemctl enable/disable httpd.service systemd 和 sysvinit命令的对照信息 systemd 电源管理命令 systemctl命令 含义 systemctl poweroff 关闭系统 systemctl reboot 重启系统 systemctl suspend 进入待机模式,如果是虚拟机的话,即使”挂起“,也就是”暂停”,通过命令行执行的话,重新执行之后,命令行重新恢复使用 systemctl hibernate 进入休眠模式,有点不一样,唤醒之后,会重新加载系统,终端会显示“信号的时间已到” systemctl hybird-sleep 进入混合休眠模式
posted @ 2017-10-31 16:29  iching  阅读(457)  评论(0编辑  收藏  举报