循环渐进linux笔记——linux系统基本机构
第一篇
- linux的基础介绍
1.linux是一个支持多用户多任务的超棒系统,它具由六个字符控制台,每个控制台都能独立作业,不会互相影响,如果需要在几个字符控制台互相切换的话可以用组合键 ctrl+alt+F1~F6中的任意一个,即可进入字符界面,如果要切换到字符界面输入startx,或者按ctrl+alt+F7
系统与硬件
linux迎接资源管理
1.查看系统PCI设备
lspci命令可以列出所有的PCI设备,不如主板、声卡、显卡和网卡等,也会把USB接口设备列出来
- 查看cpu信息
[root@localhost ~]# cat /proc/cpuinfo
processor : 0 #逻辑CPU个数
vendor_id : GenuineIntel #cpu厂家英特尔
cpu family : 6 #cpu型号
model : 42
model name : Intel(R) Core(TM) i5-2430M CPU @ 2.40GHz #cpu的信息
stepping : 7 #cpu步进
microcode : 38
cpu MHz : 2394.629
cache size : 3072 KB
physical id : 0 #物理CPU个数
siblings : 1
core id : 0
cpu cores : 1 #物理CPU内核个数
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
略...
- 查看内存信息
[root@localhost ~]# cat /proc/meminfo
MemTotal: 1004136 kB #物理内存有多大
MemFree: 635008 kB #可用物理内存有多大
Buffers: 72572 kB #缓冲区占用了的内存
Cached: 161700 kB #缓存占用了多大
SwapCached: 0 kB
Active: 73764 kB
Inactive: 180040 kB
Active(anon): 19724 kB
Inactive(anon): 8 kB
Active(file): 54040 kB
Inactive(file): 180032 kB
Unevictable: 0 kB
略...
- 查看磁盘分区信息
[root@localhost ~]# fdisk -l
Disk /dev/sda: 128.8 GB, #磁盘大小 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00012a5d
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 15666 125316096 8e Linux LVM
#分了1个分区,并显示了大小
linux外在设备的使用
在linux中如果需要使用外部一些设备如软盘、U盘、光驱和磁带需要通过挂载才能够使用。
-
硬件与设备文件 在linux系统中硬件设备都以文件形式存在。硬件与系统下相对应的文件称作设备文件,设备文件在外部设备与操作系统之间提供了一个接口,方便使用。
-
设备文件在linux系统下存放在/dev下面,设备文件的命名以主设备号加次设备号。
-
下面是linux对应设备文件名字
/dev/fd0 表示系统中的第一个软盘驱动器。
/dev/sda1 表示第一块SCSI第一个设备的第一个分区。
/dev/had 对应IDE光驱表示第一个IDE接口的光驱,SCSI光驱对应的是/dev/srx,在很多linux发行版中/dev/cdrom也是一个指向光驱的符号链接。
- 常见文件系统类型
文件系统格式 | 备注 |
---|---|
msdos | DOS文件系统类型 |
vfat | 支持长文件名的DOS分区文件系统类型,也可理解为Windows文件系统类型 |
iso9660 | 光盘格式文件系统类型 |
ext2/ext3/ext4 | linux下的主流文件系统类型 |
xfs | linux下一种高性能的日志文件系统,在CentOS 7.X版本中成为默认文件系统 |
-
设备的挂载使用
- 挂载点是linux下制定的挂载目录,将设备制定到这个挂载木后,以后访问这个挂载目录,就是访问这个设备。
- linux系统中/mnt目录,专门用作临时挂载点,是运维人员临时手动挂载一些媒体设备。
- linux系统中/media目录是自动挂载目录,用于自动挂载光盘、U盘等移动设备。
- 在CentOS 7.x版本中,出现了一个/run自动挂载目录,所有移动设备都会自动挂载到这个目录下。
-
linux下挂载的命令是mount格式是:
mount -t 文件系统类型设备名挂载点。
- 挂载软盘
mount -t msdos /dev/fd0 /mnt/floppy
# 这就是挂载软盘,以后在这个/mnt/floppy这个目录就能找到软盘的所有内容。
- 挂载U盘
# 挂载U盘前要确认U盘设备名,在命令行输入dmesg查看,一般设备文件为/dev/sda1,然后建立挂载点 mkdir /mnt/usb,然后在进行挂载
mout -t vfat /dev/sda1 /mnt/usb
3.挂载光盘
mount -t iso9660 /dev/hda /mnt/cdrom
或者
mount /dev/cdrom /mnt/cdrom
# 用mount命令挂载的是软盘、光盘和U盘,而不是软驱和光驱,当需要换另一张光盘时必须先卸载,然后重新装载光盘。
- 设备的卸载 卸载设备的命令格式是:
umonut 挂载目录
例如卸载U盘:
umount /mnt/cdrom
#在光盘没有卸载之前,光驱上面的弹出键不起任何作用。
文件系统结构
- 经典树形目录 linux的文件路径都是从 /根目录开始
因为linux发行版本过多,为了使所有的目录达成一个一致的FHS特意指定目录命名标准,这一标准的特点是根目录非常简介,只包含系统最基本的文件。这样有利于程序的编写和移植,也有利于系统管理和维护
- /etc目录
这个目录主要存放系统管理相关的配置文件,比较重要的有系统初始化文件/etc/rc、用户信息文件/etc/passwd等,相关网络配置文件和服务启动文件也在这个目录下。
文件名和目录 | 主要作用 |
---|---|
passwd | 用户库文件、每个用户的用户名、UID、GID和工作目录等都存放在此文件中 |
shadow | 存放用户密码的文件,每个用户的密码加密后都放入此文件 |
group | 主要存储用户组信息 |
fstab | 系统开机启动自动挂载分区列表,需要设置开机自动挂载的分区,都可以在此文件加入 |
systemd | systemd的配置文件目录,是CentOS 7.x版本之后新增目录,此目录是Linux启动的重要部分,用来完成对整个系统的基本初始化配置 |
hosts | 设定用户自己的IP与名字的对应表,类似于Windows下的hosts文件 |
resolv.conf | 客户端DNS配置文件 |
systemd/system/*.wants | 此目录包涵所有服务启动脚本,开机时系统将自动启动这些服务,是CentOS 7.x版本之后新增目录 |
sysconfig/network-scripts/ifcfg-eth0 | IP地址配置文件,CentOS 7.X版本之后网卡名从类似、eth0、eth1的标识变为enp0s3、enp0s4标识 |
xll | X-Window的配置文件 |
rsyslog.conf | 系统日志输出配置文件,在CentOS 5.x版本已经之前版本中对应的文件是syslog.conf,CentOS6.x版本已经以后版本中是rsyslog.conf文件 |
crontab | 系统级别的守护进程配置文件 |
sysctl.conf | 系统内核参数配置文件,在CentOS 7.版本之后,内核参数配置文件转移到了/usr/lib/sysctl.d目录下,但sysctl.conf文件仍有效,并且可覆盖/usr/lib/sysctl.d中的配置 |
services | 定义系统服务与短裤的对应关系 |
profile | 系统全局环境变量配置文件 |
- /usr目录
这个目录主要存在应用程序和文件。系统安装的时候选择的软件包默认会安装到此目录下,平时安装的一些软件默认情况下也会安装到此目录。
文件或目录 | 主要作用 |
---|---|
lib64以及local/lib64 | 64位操作系统中的函数库目录 |
src | 该目录包涵所有程序的源代码,其中主要是linux核心程序源代码 |
local | 该目录存放本地安装的软件和其他文件,与linux系统无关 |
bin以及local/bin | 使用者可执行的二进制文件目录 |
lib以及local/lib | 32位操作系统使用的函数库目录 |
sbin以及local/sbin | 该目录存放系统管理员才能执行的指令 |
include | 此目录包涵C语言的头文件,文件扩展名大多是.h |
share | 该目录存放共享的文件和数据库 |
- /var目录 主要存放系统运行及软件运行的日志信息。
文件或目录 | 主要作用 |
---|---|
log | 该目录存放各种应用程序的日志文件,这里的文件是经常变动的,因此需要定期清理 |
lib | 该目录存放系统正常运行时需要改变的库文件 |
spool | 该目录是mail、new、打印机队列和其他队列输入、输出的缓冲目录 |
tmp | 该目录允许比/tmp存放更大的文件 |
lock | 该目录存放被锁定的文件,很多程序都会在/var/lock下产生一个锁文件,以保证其他程序不能同时使用这个设备或文件 |
local | 该目录存放/usr/local中所安装程序的可变数据 |
account | 该目录存放已经格式化的man页 |
run | 该目录包涵到下次系统启动前的系统信息 |
- /dev目录 这个目录下包涵系统所有的设备文件
设备名 | 具体含义 |
---|---|
fd* | 代表软盘设备,fd0代表第一个软盘设备,fd1代表第二个软盘设备 |
audio* | 代表声卡设备 |
hd* | 代表IDE硬盘设备,hda代表第一块IDE硬盘,hdb代表第二课IDE硬盘,依次类推 |
sd* | 代表SCSI设备,sda代表第一块SCSI硬盘,sdb代表第二块SCSI硬盘,依次类推 |
lp* | 代表并行串口 |
pty* | 代表网络中登录的远程终端设备 |
ram* | 代表系统内存 |
tty* | 代表linux上的虚拟控制台,也叫字符控制台。tty1代表第一个虚拟控制台,tty2代表第二个虚拟控制台,linux上一共6个虚拟控制台 |
ttyS* | 代表串行端口。ttys0代表串行短裤1,ttys1代表串行端口 2,类似于Windows下的COM1、COM2 |
console | 代表系统控制台,也就是桌面控制台,可以直接链接到显示器 |
null | 输出空设备 |
- /proc目录 虚拟目录,目录中所有信息都是内存的映射,通过这个虚拟的内存映射目录,可以和内核内部数据结构进行交互,获取有关进程的有用信息,同时也可以在系统运行中修改内核参数。/proc存在内存中,而不是硬盘上。
文件或目录 | 说明 |
---|---|
cpuinfo | 关于系统CPU的详细信息,包括CPU名称、型号和类型等 |
meninfo | 内存信息,包括物理内存和虚拟内存 |
filesystems | 当前系统支持的文件系统类型 |
devices | 内核中的设备驱动程序列表 |
net | 网络使用协议以及状态信息 |
dma | 当前使用的dma通道 |
ioports | 当前使用的I/O端口 |
modules | 当前系统加载的内核模块信息 |
stat | 系统的各种状态信息 |
uptime | 系统总的启动时间和空闲时间,以秒为单位 |
version | 内核版本信息 |
loadavg | 系统平均负载 |
kcore | 系统物理内存的映像,与物理内存大小完全一样,但实际不占用这么大空间 |
kmsg | 内核输出信息,同时被输出到rsyslog |
- 其他目录
-
/boot目录:存放启动linux时的一些核心文件,包含一些镜像文件和链接文件,如果被破坏系统无法启动
-
/bin和/sbin目录:存放的是可执行的二进制文件。/bin主要存放普通用户用的一些指令
-
/sbin目录:/sbin存放超级用户才能执行的命令
-
/home 目录:除了root外每个用户的家目录都放在这个目录下一般以用户的帐号命名
-
/lib目录:存放共享程序库和映像文件,供程序使用,等于一个集成库方便程序调用节省磁盘空间,可供所有程序使用的文件,还包括引导进程所需的静态库文件。
-
/root目录:超级管理员root的家目录,一般用户无法访问
-
/run目录:外在设备的自动挂载点目录,出现在CentOS 7.x版本中,用来自动挂载光驱和U盘,还有一个/media目录,与/run目录作用类似,在CentOS 7.x之前版本中使用,还有一个/mnt目录主要用来手动挂载一些移动设备,比如可移动磁盘等。
-
/lost+found目录:保存丢失的文件,不恰当关机操作和磁盘错误导致的文件都是都会临时放到这个目录下,系统重启后,系统重启后,再次运行fsck程序,就会发现这些文件。除了"/"分区上的这个目录外,每个分区上都有这个目录
-
/tmp:临时文件目录,主要存放临时文件。
系统核心组成
-
内存管理:对内存各个子系统对内存的需求进行处理
-
进程管理:控制系统进程对CPU的访问,根据优先级的调度算法启动新进程来应对需求。
-
进程间通信:控制不同进程之间在用户空间的同步、数据共享和交换。
-
虚拟文件系统:linux内核中的虚拟文件系统用一个通用的文件模型表示各种不同的文件系统,这种模型遮蔽很多文件系统 的差异,使linux内核支持很多不同的文件系统
-
网络接口:网络接口分为网络协议和网络设备驱动程序。网络协议复杂实现每一种可能的网络传输协议。网络设备驱动程序主要负责与硬件设备进行通信。
linux运行机制
- 初始化系统:linux系统启动会先从BIOS开始,加下来引导程序将内核映像加载到内存,进行内核初始化,内核初始化的最后一步就是启动PID为1的init进程。这个仅是系统的第一个进程,它负责产生其他所有用户进程,当内核运行起来后会启动init系统对系统管理定义管理和控制
runlevel到target
- runlevel在CentOS 7版本之前系统由7中运行级别,运行级别均在/etc/inittab文件中指定,sysvinit程序检查/etc/inittab文件中是否含有“initdefault”项来启动一个默认的运行级别。
- 0表示关机模式
- 1表示单用户模式,只有系统管理员才能登陆
- 2表示多用户模式,不支持文件共享,不支持NFS服务。
- 3表示完全的多用户模式,支持NFS服务,最常用的用户模式
- 4表示基本不用的用户模式,可以实现某些特定的登录
- 5表示完全多用户模式,默认登陆X-Window系统
- 6表示重启
-
systemd管理体系:在CentOS 7版本中采用systemd管理体系,以前体系被新的target所取代。
系统关机过程
关机命令 #估摸这辈子用不了几次
shutdown halt相当于shutdown -h reboot:用户关机后系统重启 init:切换级别可达到关机要求
系统服务管理工具 systemd
启动、停止、重启服务
通过systemctl启动服务例:
systemctl start httpd.service #这就是启动Apache
HTTP服务器,要停掉它,需要以root身份:systemctl stop httpd.service
重启httpd服务:
restarthttpd.service
try-restart httpd.service
reload httpd.service
打开httpd服务开机自启动功能:
systemctl enable httpd.service
关闭httpd服务:
systemctl disable httpd.service
查看服务运行状态使用systemctl命令“status”:
status httpd.service