linux系统知识

体系结构

Linux 内核由如下几部分组成:内存管理进程管理设备驱动程序文件系统网络管理等。

img

Linux内核

img

Linux 将内存划分为容易处理的“内存页”,提供了对 4KB 缓冲区的抽象,例如 slab 分配器。

进程实际是某特定应用程序的一个运行实体,进程调度控制进程对CPU的访问。Linux 中常见的进程间通讯机制有信号、管道、共享内存、信号量和套接字等。

内核通过 SCI 提供了一个API来创建一个新进程(fork、exec 或 POSⅨ),停止进程(kill、exit),并在它们之间进行通信和同步(signal 或者 POSⅨ 机制)。

Linux 操作系统将独立的文件系统组合成了一个层次化的树形结构,并且由一个单独的实体代表这一文件系统。

由于 Linux 支持许多不同的文件系统,并且将它们组织成了一个统一的虚拟文件系统.设备驱动程序提供一组操作系统可理解的抽象接口完成和操作系统之间的交互,而与硬件相关的具体操作细节由设备驱动程序完成。

Linux内核的网络部分由BSD套接字、网络协议层和网络设备驱动程序组成。 网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。

Linux 文件系统

Linux系统能支持多种目前流行的文件系统,推荐用EXT4。

Linux下面的文件类型主要有:

1) 普通文件,分为纯文本和二进制。

2) 目录文件,存储文件的地方。

3) 链接文件,指向同一个文件或目录的的文件。

4) 设备文件,分为块设备和字符设备。

5)管道文件,提供进程间通信

6)套接字文件,与网络通信有关

Linux使用标准的目录结构,安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式,并指定了每个目录的作用和其中的文件类型。

目录名 简要说明
/media 用于挂载设备文件的目录
/opt 放置第三方的软件
/srv 一些网络服务的数据文件目录
/lost+found 当文件系统发生错误时,将一些丢失的文件片段存放在这里
/boot 开机所需文件—内核、开机菜单以及所需配置文件等
/bin 二进制可执行命令
/dev 以文件形式存放任何设备与接口
/etc 系统管理和配置文件
/etc/rc.d 启动的配置文件和脚本
/home 用户主目录的基点,比如用户abc的主目录就是/home/user,可以用~abc表示
/lib 标准程序设计库, 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序
/tmp 公用的临时文件存储点
/root 系统管理员的主目录
/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。
/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件
/proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
/var 某些大文件的溢出区,比方说各种服务的日志文件
/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:
/usr/X11R6 存放X window的目录
/usr/bin 众多的应用程序
/usr/sbin 超级用户的一些管理程序
/usr/doc linux文档
/usr/include linux下开发和编译应用程序所需要的头文件
/usr/lib 常用的动态链接库和软件包的配置文件
/usr/man 帮助文档
/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local 用户自行安装的软件
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的库

Linux Shell 及命令

img

vim编辑器

img

系统环境变量

# 注意所有系统环境变量都是大写

# 用户的主目录(即家目录)
echo $HOME

# 用户在使用的Shell
echo $SHELL

# 历史命令记录条数
echo $HISTSIZE

# 保存的历史命令记录条数
echo $HISTFILESIZE

# 邮件保存路径
echo $MAIL

# 系统语言、语系名称
echo $LANG

# 生成一个随机数字
echo $RANDOM

# 用户执行命令的路径
echo $PATH

#用户默认的文本编辑器
echo $EDITOR

特殊权限

SUID

set UID 简称 SUID 这个UID代表User的ID,表示文档的拥有者

有这个权限代表只能拥有者和root能操作
比如/usr/bin/passwd

SGID

set GID 简称 SGID
这个GID 代表Group 的ID,表示文档的拥有组

这个权限代表只能拥有组和ROOT能操作

Strick Bit

比如/tmp的权限”drwxrwxrwt”
仅有该档案/目录建立者与 root 能够删除自己的目录或档案

proc目录下文件详解

/proc/cmdline 载入 kernel 时所下达的相关参数!查阅此档案,可了解系统是如何启动的! 
/proc/cpuinfo 本机的 CPU 的相关资讯,包含时脉、类型与运算功能等
/proc/devices 这个档案记录了系统各个主要装置的主要装置代号,与 mknod 有关呢!
/proc/filesystems 目前系统已经载入的档案系统棉!
/proc/interrupts 目前系统上面的 IRQ 分配状态。
/proc/ioports 目前系统上面各个装置所配置的 I/O 位址。
/proc/kcore 这个就是记忆体的大小啦!好大对吧!但是不要读他啦!
/proc/loadavg 还记得 top 以及 uptime 吧?没错!上头的三个平均数值就是记录在此!
/proc/meminfo 使用 free 列出的记忆体资讯,嘿嘿!在这里也能够查阅到!
/proc/modules 目前我们的 Linux 已经载入的模组列表,也可以想成是驱动程式啦!
/proc/mounts 系统已经挂载的资料,就是用 mount 这个指令呼叫出来的资料啦!
/proc/swaps 到底系统挂载入的记忆体在哪里?呵呵!使用掉的 partition 就记录在此啦!
/proc/partitions 使用 fdisk -l 会出现目前所有的 partition 吧?在这个档案当中也有纪录喔!
/proc/pci 在 PCI 汇流排上面,每个装置的详细情况!可用 lspci 来查阅!
/proc/uptime 就是用 uptime 的时候,会出现的资讯啦!
/proc/version 核心的版本,就是用 uname -a 显示的内容啦!
/proc/bus/* 一些汇流排的装置,还有 USB 的装置也记录在此喔!
本文总阅读量