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和终端生成,来引起中断;它们还可以作为进程间传递消息和修改行为的一种方式(明确的由一个进程发送给另一个进程)

原文地址:https://www.cnblogs.com/kexinxin/p/10012015.html