何为操作系统?按照自己的理解,操作系统就类似一个平台,上面可以运行各种应用程序,向下可以屏蔽各种硬件差异对用户带来的影响,是用户与计算机硬件系统之间的接口。
看看《计算机操作系统》中对操作系统是怎么定义的:
OS作为用户与计算机硬件系统之间的接口;
OS作为计算机系统资源的管理者;
OS实现了对计算机资源的抽象;
OS是铺设在计算机硬件上的多层系统软件,它们不仅增强了系统的功能,而且还隐藏了对硬件的操作细节,由它们实现了对计算机硬件操作的多个层次的抽象。
多用户多任务操作系统的含义是:允许多个用户通过各自的终端使用同一台机器,共享主机系统的各种资源,而每个用户程序又可以分为几个任务,使他们能并发执行,从而可进一步提高资源利用率和系统吞吐量。
计算机体系结构的分层关系:
应用程序 |
库(API) |
内 核 |
硬 件 |
API规范:POSIX规范 遵循POSIX规范之后各种应用程序可以运行在不同的系统之上。
上层用户跟内核交互的机制:中断,系统调用(system call)
系统调用:从用户态切换到内核态 以能够实现所有功能但是消耗资源最少
中断:停止正在执行的任务,转而执行对实时性要求更高的进程。分为硬终端还软中断
Redhat封装了GNU多个应用程序再加上Linux的内核编译成通用的二进制形式,并提供安装形成发行版。
LFS──Linux from Scratch,就是一种从网上直接下载源码,从头编译LINUX的安装方式。它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些 生东西( raw code) 作成符合自己口味的菜肴──个性化的linux,不单单是个性的桌面。(来自百度百科)
Redhat Linux经历了6.0 7.0 8.0 9.0。自2002年起,Redhat将产品分为两个系列,即由Red hat公司提供收费技术支持 和更新的RHEl服务器版,以及由Fodora社区开发的桌面版本Fedora Core(FC),目前通用的Redhat Enterprise版本为5.4 5.5以及刚刚发行的6.0版本。
常用的两种体系架构有 IA-32,x86 AMD64,x86_64两种平台
除了常用的Intel ,AMD处理器之外,还有Power,PowerPC,Ultrasparc,安腾,M68K,Mips ,Arm(只制作标准)等。
应用程序之上有一种特殊的程序 SHELL 计算机和人相互交接的一个界面。
进程是用户意图代表。
Linux下两种人机交互接口:CLI :bash (windows)sh ksh csh zsh
GUI (X-window) Desktop Gnome KDE XFace
红帽默认Gnome
Linux下各种设备都是以文件的形式存在于磁盘中。
Linux环境下用户分为两类Root :superuser administrator; Commonuser:student不建议使用管理员身份登录。普通用户的家目录是/home/username 管理员Root /root。
几个常用命令的使用:Ctrl+shift+T 可多打开多个终端
Ctrl+Pageup(Pagedown)之间相互切换
Crtl+shift+C 复制
Shift+Pageup(pagedown)上下翻页
Alt+F10 窗口最大化
Alt+F9 窗口最小化
Less 分屏查看文件
往下翻一行 space键?--->b 翻一页Enter?->k
补齐分为命令补齐和路径补齐。
命令有两种:内部命令:shell
外部命令 PATH 有一个可执行的程序 #echo $PATH
su switch user 用户切换
su [-] login 不加横线 shell是root 环境下不会发生改变, 加横线su – student会改变(为当前用户创建一个新的shell)。
sudo 不再切换用户的情况下使用另外一个用户执行命令。
!! 使用上一个命令
!fin 查找从后往前第一个以fin开头的命令
!数字 表示执行命令历史列表中的第N条命令
!-n 表示倒数第N条命令
^/etc^/dev 把上一条命令的etc转换为dev
!$或者Esc+. 调用上一条命令的最后一个参数
Ctrl+r
Histsize 命令历史的长度 最多保存多少条 redhat默认1000条
Histfilesize控制文件里保存多少条 默认1000条
Histfile 定义文件的保存位置 /root/.bash_history
清空命令历史列表 history –c
文本编辑器 :纯粹处理纯文本文件,字符本身没有任何修饰信息。行编辑器 :sed,全屏编辑器 :nano vim emacs。
命令格式:# command [options] 选项 [arguments]参数
选项:修改命令的执行动作
长选项 - -开头 eg –help 不能组合
短选项 -开头 eg -l 可以组合 eg -lhd
参数: 制定命令的执行对象
<>表示必须的 [-x|-y|-z]可选的,多选一
clock显示硬件时间,即bios里边的时间。
更改时间 Date hhmmMMDDYY.ss
hwclock –w 把系统时钟写到硬件里边去
hwclock –s 把硬件时间写到系统时钟里边去
Date +“%m-%d-%y”
%s表示从unix元年到此刻所经过的秒数
如何获得帮助
命令 -h 内部命令获得帮助的方式
命令 --help 外部命令获得帮助
Man ——》查找manual 手册 /usr/share/man
Man command 查看命令手册
man –k =apropos 非精确搜索
info –p在节点间进行跳转 –n跳转到下一个命令 作为man命令的补充使用的
Whatis makewhatis 手动建立whatis数据库
/usr/share/doc
n/N 下一个,前一个
Linux文件系统结构:
/bin二进制文件的存放目录(可执行文件)一般都显示为绿色
/dev 设备特殊文件
/etc 系统管理和配置文件
/etc/rc.d 启动的配置文件和脚本
/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序(二进制文件)
/tmp 公用的临时文件存储点
/root 系统管理员的主目录(呵呵,特权阶级)
/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。
/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里
/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/bin 本地增加的命令
/usr/local/lib 本地增加的库
两个挂载点:/media 挂载便携式媒介 /mnt 挂载格外硬盘
/opt 可有可无的
/var /srv (service 服务器在工作当中,产生一些中间数据,放在此目录下) 数据文件的存放目录
伪文件系统 /proc 正在内存当中运行的内核信息的映射
/sys 导出系统的硬件设备信息
/lib 功能模块 可执行文件 动态库 静态库 符号库
linux 内核在/boot分区
/swap 交换分区,一般是物理内存的二倍。
以点开头的文件表示隐藏文件
.表示当前目录 ..表示父目录
动态装入器,ld.so.conf, ld.so.conf.d/*.conf 将路径添加进去即可。
FHS规范:规范在根目录(/)下面各个主要目录应该放什么样的文件。FHS定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。
文件或目录名 255个字符 严格区分大小写 除 /不能用以外原则上其他任何都可以用
有特殊符号的话 如* 空格 ,要加引号‘’ eg: touch ‘c d’ 。
查看student用户信息:id student
finger student
pwd 显示当前工作目录
cd – 返回上一个工作目录
Mkidr –pv z/y 如果z不存在,先创建z v选项表示显示创建过程
- 普通文件 在使用ls –l时,所列内容的第一项的第一位为“-”。系统中源码、文本和shell程序等都是正规文件。
D 目录文件 目录是一种特殊的文件,它的内容是所包含的文件的信息:文件的位置、大小、文件的创建时间等。使用ls –l时,第一项第一列的标识为“d”。目录文件只能由操作系统或专门的程序来读取和修改,普通用户无法直接访问目录文件,只能读取目录文件的内容。
L 链接文件(link file) 系统中的链接是一个已经存在的文件的另一个名字,它不复制文件的内容。有两种链接方式,一种是硬链接(hard link),另一种是符号链接(symbolic link),又称软链接。硬链接和原有文件是存储在同一物理地址的两个不同的名字,因此硬链接是相互的;符号链接的内容只是一个所链接文件的文件名,在使 用ls –l时,符号链接的第一项的第一位为“l”。
C 字符设备 一次传输一个字符 装置文件里边的串行端口设备,例如键盘,鼠标
B 块设备 一次读一个数据块 装置文件里边可供储存的接口设备;
S 套接字文件 socket 进程间通信 socket是linux系统中用于计算机之间相互通信的应用程序的接口它将完成网络上的I/O操作。在linux系统中,socket并不是一个真正的文件,但是它被抽象成一个文件,使用ls –l命令时,第一项第一位的标识为“s”。
P管道文件 进程间通信的一种机制
查看文件的三个时间:访问时间access 修改时间 modify 改变时间change(文件属性 文件名改变)
stat a 显示a的状态
touch 将三个时间都改为当前时间
touch –a access time改为当前时间
-m 改变最近一次修改时间
-t 改变成指定时间
cp src dst
如果目标文件存在,则覆盖目标文件
如果目标不存在 则把源文件拷过来,并以目标文件名命名
cp /etc/issue /m/a..txt
-f 强行覆盖目标文件
-i 如果目标文件存在,提示你是否覆盖
alias 要想使用原命令,绕过别名,直接使用命令原来的意义,在命令前边加”\”
mv
rm -f 强制删除 -r递归删除
file 简单判断文件内容的不同
用户:使用标识可以获取资源的集合。
组:容器
linna——>UID ——>/etc/passwd
password——>/etc/shadow 同时也包含着账户密码的属性信息
mygrp——>GID——>/etc/group 组账号
/etc/gshadow 组密码
用户账号:
类别 管理员 系统用户和普通用户
root
1——499 系统用户
500<UID<60000 普通用户
属主的权限:定义了文件和目录属主可对其进行的操作
l 同组用户的权限:定义了与属主在同组的其他成员可对其进行的操作。
l 其他用户的权限:定义了除去属主和同组的成员外,其他用户可对其进行的操作。
组 三类
私有组 公共组
基本组(主组)和附加组(额外组)
对文件来说
9 8 7 6 5 4 3 2 1 0
- r w x r - x r - x
r 查看 例如cat less
w修改
x 执行(脚本) 可执行文件
对于目录来说r查看内容 例如ls
w 建立新文件 删除原有文件 修改文件
x进入目录权限
useradd 建立一个新用户
passwd username 为用户添加密码
文件权限修改方法:同时操作所有用户权限
只操作一类用户权限
用户:u 组 g 其他 o 所有 a
chgrp 改变文件所属群组
chown 改变文件所属人
chmod 改变文件的属性、SUID等等的特性
chmod u=
只操作某一类用户某一位用户权限
chmod –R 递归改变权限
chown/chgrp [-R(子目录文件权限都改变)] groupname filename
chown username;grpname filename 改变所属用户和组
chown --reference =src dst
chmod –reference=src dst
把src的权限改成dst的权限
超级权限
suid sgid sticky
11 10 9 8 7 6 5 4 3 2 1 0
S G T r w x r w x r w x
第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上面的u g o三组的 rwx位。
suid 期望其他用户不是以自己身份来运行脚本,而是以文件属主的身份来运行
sgid
sticky o:w 全局可写通常只能用在目录上
4:suid
2:sgid
1:sticky
S表示原来没有执行的权限 s表示在原来执行的权限上再加一个s