Linux基础2
Linux基本概念
Linux的发展史
Linux发行版
发行版一般提提供两种用户界面
图形化用户界面(GNOME,KED等)
命令行界面CLI(bash)
Linux的优势
与Unix操作系统兼容
广泛的硬件运行条件
多硬件平台支撑和可移植性
支持多种文件系统
良好的设备独立性
强大的网络功能
完美支持多用户任务
完善的虚存技术
Linux用户和权限
用户和组的基本概念
Linux中的文件、进程都是和用户绑定在一起的
用户的身份决定了能使用和操作的资源(文件,进程)
每个用户名有一个对应的uid
每个用户都隶属于一个或多个组
用户分为三种类型
超级管理员root用户(uid为0)
系统用户(uid为1-499)
普通用户(uid为500或以上)
权限是操作系统用来限制用户,组,进程对操作系统资源(文件,设备等)的访问的机制
权限分为:读,写,执行,Linux中表示为r,w,x
Linux中每个文件或目录都拥有一个所属用户和所属组,并且设置对应权限
每个进程在运行的时候均以一个用户的身份运行,同时继承该用户的权限
Linux使用UGO模型来进行权限管理
U代表用户,G代表组,O代表其他用户和组
权限 |
文件 |
目录 |
r |
可读取文件内容 |
可以列出目录的内容 |
w |
可修改文件的内容 |
可创建,删除目录中的文件 |
x |
可以作为命令执行 |
可访问目录内容 |
第一个代表这个文件的类型
d |
代表目录 |
- |
代表文件 |
l |
表示为链接文件 link file |
b |
表示为设备文件中可供存储的接口设备 |
c |
表示为设备文件中的串行端口设备,例如键盘、鼠标 |
磁盘基本的概念
Linux系统中所有设备都被抽象成文件,存储在/dev目录下
分区:即将一个磁盘在逻辑上分为几个区,每个区当成独立的磁盘使用,以达到方便数据和文件管理的目的。
目前主流的分区技术有:MBR和GPT
MBR:Master Boot Record
GPT: GUID Partition Table
MBR是一种建立在BIOS技术基础上的传统分区机制
其主要特点为:
支持32位和64位系统
支持分区数量有限(最多4个主分区)
寻址空间为32位,最大支持大小为2TB的硬盘
主分区
MBR最多支持4个主分区
扩展分区
扩展分区可以建立多个逻辑分区,但一个扩展分区占用一个主分区的位置
逻辑分区
Linux系统最多支持63个IDE和15个SCSI逻辑分区
GPT
GPT是一种建立在UEFI技术基础上的新分区机制,其主要目的是解决MBR机制的缺陷
主要特点:
支持超过2TB大小的硬盘
必须使用64位系统
向后兼容MBR
目前类Unix系统都支持GPT技术,Windows系统从Windows7之后支持
Linux系统启动流程
BIOS:硬件启动
基本输入输出系统,一般保存在主板的ROM中。主要完成两个部分的功能:
通电自检
寻找启动设备
MBR:Master Boot Record
Linux启动过程中执行MBR中的前446个字节
GRUB:操作系统引导程序
Linux发行版中普遍使用的引导程序
加载内核
init:第一个进程
调用/etc/rc.d/rc.sysinit文件对系统进行初始化
挂载文件系统
根据运行级别启动相关服务和程序
Linux的运行级别
0:关机
1:单用户模式
2:不带网络模式的多用户
3:普通多用户模式
4:未使用
5:图形化界面
6:重新启动
runlevel:相关应用程序
Linux文件共享方法
通过副本共享:复制需要共享的文件并发送到组内每个成员
通过同一用户名登陆共享:共用一个账号登陆系统
为共享文件设立适当的访问权限:把所有共享的文件放到一个成员账号下,设置成员具有读写和执行的权限
为团队成员建立一个用户组:建立一个新用户组只包括项目组的所有成员,每个用户用自己的账号登陆,为自己的文件设立适当的访问权限,使得它们可以被组中的其他成员访问。
通过文件链接共享,Linux两类链接:硬链接(hard link)和软(符号)链接(Soft/symbolic link)
硬链接是一个指向文件索引节点的指针。ln并不会影响文件的内容,它只是建立另一个文件名称而已。
硬链接的特点:
不可跨越文件系统
只有超级用户才可以建立目录硬链接
不占用空间(极少)
系统为共享用户创建一个link类型的新文件,将这个新文件的登记在该用户共享目录向下,这个link型文件包含链接文件的路径名。该类文件在用ls命令长列表显示时,文件类型为l
当用户要访问共享文件且要读link型新文件时,操作系统根据link文件类型性质将文件内容作为路径名去访问真正的共享文件。
符号链接的特点
可跨越文件系统,甚至跨越网络(NFS)
如果链接指向的文件从一个目录移动到另一个目录,就无法通过符号链接访问它
占用少量空间,存inode的信息
进程的基本概念
Linux进程可以处于多种状态中的一种
进程可以从一种状态变为另一种状态,直到执行结束(正常或者非正常终止)并退出系统。
当进程完成它的工作并正常退出系统,进程就是正常终止
当进程是因为在异常(错误)条件下退出系统或者在其拥有者或特权用户的干涉下退出系统,它便是非正常终止。
TASK_RUNING:进程在运行(是系统的当前进程)或者准备运行(等待被安排到系统的一个CPU上)。进程控制块有一个run_list成员,所有处于TASK_RUNNING状态的进程都通过该成员链在一起,称之为可运行队列
TASK_INTERRUPTIBLE:进程处于某个等待队列中,它能被信号(signal)或中断唤醒。等待资源的请求满足时,也被唤醒。
TASK_UNINTERRUPTIBLE:进程处于某个等待队列中,不能被信号或中断唤醒,只有等待的资源被满足时才能被唤醒。列入当进程打开一个设备文件时,使用TASK_UNINTERRUPTIBLE
TASK_ZOMBIE:进程已经停止,但还没有释放集成控制块
TASK_STOPPED:可能被特定的信号终止,也可能是受其他进程的跟踪调用而暂时将CPU交给跟踪它的进程。
Shell命令可以是内部或者外部命令
内部(内置)命令(internal (built-in) command)的代码本身就是shell进程的一部分。LINUX shell中的一些命令如.(点命令)、alias、bg、cd、continue、echo、exec、exit、fg、jobs、pwd、set、shift、test、time、umask、unset和wait
外部命令(external command)命令代码以文件的心事出现的承诺为;文件内容可以是二进制代码或者shell脚本。通常使用一些外部命令如grep,more,cat,mkdir,rmdir,ls,sort,ftp,telnet,lp和ps。
LINUX进程通过系统调用fork创建另外一个进程,该操作建立原进程内存的完全拷贝。这两个进程接着fork后的语句执行。
Linux程序设计基本概念
文件操作
LINUX只需少量函数就可以实现对文件和设备的访问和控制,这些函数被称为系统调用。
系统调用由LINUX系统直接提供,是通向操作系统自身的接口。
LINUX系统提供5个系统调用:open,write,read,close,iotcl
LINUX的核心部分是内核,内核由一组设备驱动程序组成,完成系统对硬件的访问和控制。
为了向用户提供统一的接口,设备驱动程序封装了所有与硬件相关的特性。硬件的特有功能一般通过系统调用iotcl来完成。
为了给设备和磁盘文件提供更高层的接口,Linux的个发行版一般提供一系列的标准函数库。
僵尸进程
子进程终止时,其与父进程之间的联系还会保持,直到父进程也正常终止或父进程调用wait( )方法才告结束。
因此,进程表中代表进程的表项不会立即删除(虽然子进程已经不再运行),因为它的退出码还需要保存起来,以备父进程中可能的wait()方法使用
我们就称这样的进程为死(defunt)进程或僵尸(zombie)进程
信号
信号是由于某些错误条件而生成的,如内存段冲突,浮点处理器错误或非法指令等;接收到该信号的进程会相应的采取一些行动。
用术语生成表示一个信号的产生,使用术语捕获表示接收到一个信号
一个进程在接收到信号后,默认情况是立即终止进程。
信号可以被产生,捕获,响应或忽略
信号可以由shell和终端生成,来引起中断;它们还可以作为进程间传递消息和修改行为的一种方式(明确的由一个进程发送给另一个进程)