linux系统
1.1认识linux
1.1.1什么是操作系统
1.1.2 现实生活中的操作系统
w7,mac,android,ios
1.1.3 操作系统的发展史
1965年之前的时候,电脑并不像现在一样普遍,它可不是一般人能碰的起的,除非是军事或者学院的研究机构,而且当时大型主机至多能提供30台终端(30个键盘、显示器),连接一台电脑为了解决数量不够用的问题.
1965年左后由贝尔实验室、麻省理工学院以及通用电气共同发起了Multics项目,想让大型主机支持300台终端
1969年前后这个项目进度缓慢,资金短缺,贝尔实验室退出了研究
1969年从这个项目中退出的Ken Thompson当时在实验室无聊时,为了让一台空闲的电脑上能够运行“星际旅行”游行,在8月份左右趁着其妻子探亲的时间,用了1个月的时间编写出了Unix操作系统的原型
1970年,美国贝尔实验室的 Ken Thompson,以 BCPL语言 为基础,设计出很简单且很接近硬件的 B语言(取BCPL的首字母),并且他用B语言写了第一个UNIX操作系统。
因为B语言的跨平台性较差,为了能够在其他的电脑上也能够运行这个非常棒的Unix操作系统,Dennis Ritchie和Ken Thompson从B语言的基础上准备研究一个更好的语言
1972年,美国贝尔实验室的Dennis Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言
1973年初,C语言的主体完成。Thompson和Ritchie迫不及待地开始用它完全重写了现在大名鼎鼎的Unix操作系统
1.1.3.2minix
因为AT&T(通用电气)的政策改变,在Version 7 Unix推出之后,发布新的使用条款,将UNIX源代码私有化,在大学中不再能使用UNIX源代码。Andrew S. Tanenbaum(塔能鲍姆)教授为了能在课堂上教授学生操作系统运作的实务细节,决定在不使用任何AT&T的源代码前提下,自行开发与UNIX兼容的操作系统,以避免版权上的争议。他以小型UNIX(mini-UNIX)之意,将它称为MINIX。
1.1.3.3linux
因为Minix只是教学使用,因此功能并不强,因此Torvalds利用GNU的bash当做开发环境,gcc当做编译工具,编写了Linux内核-v0.02,但是一开始Linux并不能兼容Unix,即Unix上跑的应用程序不能在Linux上跑,即应用程序与内核之间的接口不一致,因为Unix是遵循POSIX规范的,因此Torvalds修改了Linux,并遵循POSIX(Portable Operating System Interface,他规范了应用程序与内核的接口规范);一开始Linux只适用于386,后来经过全世界的网友的帮助,最终能够兼容多种硬件;
1.2文件和目录
1.2.1windows 和 linux 文件系统区别
在 windows 平台下,打开“计算机”,我们看到的是一个个的驱动器盘符:
每个驱动器都有自己的根目录结构,这样形成了多个树并列的情形,如图所示:
在Linux下,我们是看不到这些驱动器盘符,我们看到的是文件夹(目录):
1.2.2Unix 系统目录结构
ubuntu没有盘符这个概念,只有一个根目录/,所有文件都在它下面
·/:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
·/bin、/usr/bin:可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
·/boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
·/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。
·/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~edu 表示用户 edu 的家目录。
·/lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
·/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
·/mnt: /media:光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载。
·/opt:给主机额外安装软件所摆放的目录。
·/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等。
·/root:系统管理员root的家目录。
·/sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。
·/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
·/srv:服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
·/usr:应用程序存放目录,/usr/bin存放应用程序,/usr/share存放共享数据,
/usr/lib存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。
/usr/local:存放软件升级包。/usr/share/doc:系统说明文件存放目录。
/usr/share/man:程序说明文件存放目录。
·/var:放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。
1.2.3用户目录
位于/home/user,称之为用户工作目录或家目录,表示方式:
/home/user
~
1.2.4相对路径和绝对路径
1.2.4.1.1 绝对路径
从/目录开始描述的路径为绝对路径,如:
cd/home
ls/usr
1.2.4.1.2 相对路径
从当前位置开始描述的路径为相对路径,如
cd ../../
ls abc/def
1.2.4.1.3 .和..
每个目录下都有.和..
.表示当前目录
..表示上一级目录,即父目录
根目录下的.和..都表示当前目录
�1.2.5文件权限
文件权限就是文件的访问控制权限,即哪些用户和组群可以访问文件以及可以执行什么样的操作。
Unix/Linux系统是一个典型的多用户系统,不同的用户处于不同的地位,对文件和目录有不同的访问权限。为了保护系统的安全性,Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制。
在Unix/Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。
1.2.6 访问用户
通过设定权限可以从以下三种访问方式限制访问权限:
·只允许用户自己访问(所有者)所有者就是创建文件的用户,用户是所有用户所创建文件的所有者,用户可以允许所在的用户组能访问用户的文件。
·允许一个预先指定的用户组中的用户访问(用户组)用户都组合成用户组,例如,某一类或某一项目中的所有用户都能够被系统管理员归为一个用户组,一个用户能够授予所在用户组的其他成员的文件访问权限。
·允许系统中的任何用户访问(其他用户)用户也将自己的文件向系统内的所有用户开放,在这种情况下,系统内的所有用户都能够访问用户的目录或文件。在这种意义上,系统内的其他所有用户就是other用户类
1.2.7 访问权限
用户能够控制一个给定的文件或目录的访问程度,一个文件或目录可能有读、写及执行权限:
·读权限(r)对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
·写权限(w)对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。
·可执行权限(x)对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。
注意:通常,Unix/Linux系统只允许文件的属主(所有者)或超级用户改变文件的读写权限。
示例说明
第1个字母代表文件的类型:“d”代表文件夹、“-”代表普通文件、“c”代表硬件字符设备、“b”代表硬件块设备、“s”表示管道文件、“l”代表软链接文件。后9个字母分别代表三组权限:文件所有者、用户者、其他用户拥有的权限。
每一个用户都有它自身的读、写和执行权限。
·第一组权限控制访问自己的文件权限,即所有者权限。
·第二组权限控制用户组访问其中一个用户的文件的权限。
·第三组权限控制其他所有用户访问一个用户的文件的权限。
这三组权限赋予用户不同类型(即所有者、用户组和其他用户)的读、写及执行权限就构成了一个有9种类型的权限组。