sre学习作业
- 一个完整计算系统的简要介绍
计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。
计算机是一种能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件系统和软件系统所组成,没有安装任何软件的计算机称为裸机。
冯诺依曼体系,数字计算机的数制采用二进制,bit 位, byte 字节 1 byte =8 bit
计算机的组成:

1、运算器是一个用于信息加工的部件,它用来对二进制的数据进行 自述去处和逻辑运算,核心部分是加法器,运算器主要由一个加法器,若干个寄存器和一些控制器组成。
2、控制器主要功能是根据人们预先编制好的程序,控制与协调计算机各部件自动工作。
运算器和控制器不论在逻辑关系上或是在工艺上都有十分紧密的联系,往往组装在一起,所以将这两个部分称为“中央处理器”CPU(Center Processing Unit)
3、内存储器
内存储器(Memory主存,内存),是计算机用来存放程序和数据的记忆部件,分为随机存取存储器RAM(Random Access Memory)和只读存储器ROM(Read-Only Memory)两种。
RAM中的信息:可随机地读出或写入,一旦关机(断电)后,信息不再保存。
ROM中的信息:只有在特定条件下才能写入,通常只能读出而不能写入,断电后,ROM中的原有内容保持不变。ROM一般用来存放自检程序、配置信息等。
3.1外存
①硬盘②软盘③光盘④USB优盘⑤USB移动硬盘⑥DVD光盘
3.2、高速缓冲存储器(Cache Memory):是内存与CPU交换数据的缓冲区,是为解决内存与CPU速度不匹配的问题而设计的一种存储设备。
4、输入设备:把原始数据和处理这些数据的程序通过输入接口输入到计算机的存储器中。
5、输出设备:输出计算机的处理结果。
常用输出设备:显示器、打印机、绘图仪、音响、喇叭等(嘴巴)
6、系统软件是指计算机的基本软件,是为使用和管理计算机而编写的各种应用程序。系统软件包括监控程序、操作系统、汇编程序、解释程序、编译程序和诊断程序等。
7、应用软件是专门为解决某个应用领域里的总体任务而编制的程序。应用程序一般由用户自行设计,有的计算机厂家也提供应用软件。
- 学会进制的转换,并简单举例完成转换
10进制转2进制
范例:
192
192-128=64
128 64 32 16 8 4 2 1
1 1 0 0 0 0 0 0
二进制转10进制
10101011
128 64 32 16 8 4 2 1
1 0 1 0 1 0 1 1
128+32+8+2+1=171
八进制转10进制
0111=73
8^2+8^1+8^0=73
10进制转8进制
152
152/8=19/8=2
八进制=032
3、说明tab键补全命令以及补全路径的原理。
Tab键可以实现将命令和文件,目录等补全提高输入效率
① 命令补全
用户给定的命令只有唯一对应的按TAB可以直接补全,否则按两次tab键会列出对应结尾的列表
内部命令:集成再bash_shell中
外部命令:外部命令存放在bash环境变量$PATH定义的路径使用外部命令使用会在$PATH变量定义的路径下从左往右查询,当该命令执行过会缓存到hash表中。
第一次找到的命令即要执行命令的子命令补全,需要安装 bash-completion
#yum install bash-completion -y 【centos、rocky】
#apt install bash-completion -y 【ubuntu】
② 文件路径补全
再需要前往访问的文件路径过程中当敲击的字符如果惟一:则直接补全否则:再次Tab给出列表
③ ③双击Tab键
cmd 2Tab 所有子命令或文件补全
string2Tab 以string开头命令
/2Tab 显示所有根目录下一级目录,包括隐藏目录
./2Tab 当前目录下子目录,包括隐藏目录
*2Tab 当前目录下子目录,不包括隐藏目录
~2Tab 所有用户列表
$2Tab 所有变量
@2Tab /etc/hosts记录 (centos7 不支持)
=2Tab 相当于ls –A (centos7不支持)

4、说明内部命令和外部命令的区别,以及他们如何获取帮助的
① 区别
内部命令:内部命令指的是集成在Shell里面的命令,属于Shell的一部分。只要Shell被执行,内部命令就自动载入内存,用户可以直接使用,比如cd、history命令等。
外部命令:考虑到运行效率等原因,不可能把所有的命令都集成在Shell里面,更多的Linux命令是独立于Shell之外的,这些就叫做外部命令,比如cp、ls等命令。每个外部命令都对应系统中的一个可执行的二进制程序文件。
对于外部命令:其实就是二进制文件或者可执行程序,但为什么可以直接输入命令就能运行呢。那是因为Linux系统自带的环境变量中包含了这些外部命令的路径,每次在Shell中输入外部命令,系统就会自动在环境变量中依次查找环境变量是否含有这些命令,如果有那么直接输入即可运行,否则则应该输入命令所对应的完整路径才能运行。
② 获取帮助
先使用type命令查看是内部还是外部命令

内部命令:
help cmd
man cmd
外部命令:
cmd --help
Cmd -h
man cmd
Info cmd
5、说明命令行快捷键如何完成,1)快速跳转到行首?2)快速跳转到行尾?3)快速删除当前光标到行尾,4)快速删除光标到行首,5)如何快速取消执行命令。
1)快速跳转到行首
Cfrl+a
2)快速跳转到行尾
Cfrl+e
3)快速删除当前光标到行尾
Cfrl+k
4)快速删除光标到行首
Cfrl+u
5)如何快速取消执行命令。
Cfrl+c
6、总结Linux目录结构说明每个目录主要的用途。

/bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着普通用户最使用的命令。
/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:
普通用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:
该目录存放一些服务启动之后需要提取的数据。
/tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr:
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin:
系统用户使用的应用程序。
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:
内核源代码默认的放置目录。
/var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件。
7、总结文件通配 *, ?, [a-z], [0-9], ~,{a..z},
[:alnum:] [:alpha:] [:blank:]
[:digit:] [:graph:] [:lower:]
[:punct:] [:space:] [:upper:]等常用通配符
*, 匹配零个或多个字符,但不匹配 "." 开头的文件,即隐藏文件
?, 匹配任何单个字符,一个汉字也算一个字符
[a-z], 一个字母
[0-9], 匹配数字范围
~, 当前用户家目录
[:alnum:] 任意数字或字母
[:alpha:] 任意大小写字母
[:blank:] 水平空白字符
[:digit:] 任意数字,相当于0-9
[:graph:] 图形字符
[:lower:] 任意小写字母,表示 a-z
[:punct:] 标点符号
[:space:] 水平或垂直空白字符
[:upper:] 任意大写字母,表示 A-Z


8、说明文件系统如何根据用户输入的路径查找到磁盘上的文件的过程

在计算机中是通过文件的索引编号,文件索引编号简称inode号,用来标识系统中的每一个文件或者块设备或者其他文件。而inode号在一个分区上不会有重复,在多个分区上允许重复,因为不在一个分区块上每个分区的节点编号都是有限的,节点编号不足时不能创建文件。
文件在Linux中的所有信息总和叫元数据(onwer所有者、time修改时间、size大小、mode权限,而节点表记录元数据),元数据记录文件的所有信息,上述提到的Inode号用来标记文件,而元数据通过指针找到具体数据。
在同一个分区中,修改文件目录或者路径只是将元数据进行修改,内容本身仍然存在原有位置,除非要移动的数据在另外一块分区,否则将只是修改元数据内容。而在硬盘中,数据并不是连续性的,是分成了很多小块来存放在很多不同的位置,这是硬盘存放数据的特性。元数据通过指针来找到硬盘中的数据,但是文件的大小会影响指针的数量,在指针逻辑上,一个指针只可以指向一个4K的数据块,一级指针最多有12个直接指针,最多48K,而越大的文件不断通过指针块来链接更多数据,一个指针块也是4K,一个指针4个字节所以有1024个,可以指向4096K的文件,再大的文件可以指向更多指针块,指针越多,文件越大,要寻找的时间就越长,这就是文件系统向硬盘寻找数据的整个过程(指针结构详细看上图)。
9、总结硬链接和软件链接原理,并举例说明如何使用
硬连接:
硬链接看上去就像是给文件创建一个新的名称,实际是一个文件,(不支持跨分区,不支持为目录创建,节点号相同)

软链接:
软连接相当于一个快捷方式,软链接本质上不是同一个文件(节点号不同,链接数不变,可以跨分区、支持为目录创建软连接)

删除软连接:
一定注意rm /date/data.back 后面别跟上了/

10、说明linux命令管理工作流程,结合管道功能,自行设计几个题目。
Linux命令的工作流程:
别名、内部、外部
查看anaconda-ks.cfg将里面的root筛选出来

使用多行输入重定向将内容配合tee生成文件

11、说明标准输入,标准输出,标准错误输出的区别,及举例说明其功能
标准输入(STDIN)-0 默认接收来自终端窗口的输入
标准输出(STDOUT)-1 默认输出到终端窗口
标准错误(STDERR)-2 默认输出到终端窗口
标准输出重定向:

标准输出错误重定向:

标准输出和错误重定向合并:

标准输出和错误分别重定向:
[root@rocky ~]#ls /etc/ /hnnkn > cuowu3.log 2> cuou.xtx
12、 总结学过的用户,组,权限相关的命令及选项,示例
管理命令:
useradd 创建用户
选项:
-c、 注释新帐户的comment GECOS字段
-d、 新帐户指定的家目录(不存在的)
-g、 指名新用户所属的基本组,可以是组名或者GID
-G、 为用户指明附加组,附加组必须要事先存在
-m、 创建家目录用于系统用户
-M、 不创建主目录用于非系统用户
-N、 不创建与同名的组,使用users组做主组
-o、 配合-U选项不检查UID的唯一性
-p、 --密码password新帐户的加密密码
-r、 创建系统帐户
-s、 指明用户默认的shell程序,可用列表在/etc/shells文件中
-u、 新帐户的ID
-U、 --用户组创建与用户同名的组
usermod 修改用户属性
选项:
-d、 新家目录不会自动创建,若要创建新家目录并移动原家数据同时使用-m选项
-f、 密码设置为过期后不活动至停用
-g、 新的主组
-G、 新附加组,原来的附加组会被覆盖,若要保留原有则要同时使用-a选项
-a、 --将用户追加到补充GROUPS由-G选项提及,但不删除来自其他组的用户
-l、 --login NEW_login登录名的新值
-L、 --锁定用户帐户在/etc/shadow密码栏增加!
-m、 --将主目录的内容移动到新位置(仅与-d一起使用)
-o、 --非唯一允许使用重复(非唯一)UID
-p、 --密码password使用加密密码作为新密码
-R、 --要CHROOT到的根CHROOT_DIR目录
-u、 用户帐户的新uid
-U、 --解锁解锁用户帐户,删除/etc/shadow密码栏!
userdel 删除linux用户
选项:
-f、 --强制执行一些否则会失败的操作例如,删除仍登录的用户
或文件,即使不属于用户
-r、 --删除删除主目录和邮件假脱机
Id查看用户的UID和GID
选项:
-g、 --只打印有效组ID
-G、 --组打印所有组ID
-n、 显示名称配合ugG使用
-u、 --用户仅打印有效用户ID
su切换用户
选项:
-m -p,--保留环境不重置环境变量
-l --login使shell成为登录shell
-c 使用-c将单个命令传递给shell使用-c将单个命令传递给shell并且不创建新会话
Passwd用户密码
选项:
-d:删除指定用户密码
-l:锁定指定用户
-u:解锁指定用户
-e:强制用户下次登录修改密码
-f:强制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码,Ubuntu无此选项
Chage修密码策略
选项:
-d LAST_DAY 更改密码的时间
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
-I --inactive INACTIVE #密码过期后的宽限期
-E --expiredate EXPIRE_DATE #用户的有效期
-l 显示密码策略
chage -d 0 wang
创建groupadd创建用户组
选项:
-g 指明gid号
-r 创建系统组
groupmod修改组
选项:
-n group_name 新名字
-g GID 新的GID
Groupdel删除组
选项:
-f --force 强制删除即使他是用户的主组,会导致无主组的用户不可用无法登录
gpassword更改组密码也可修改附加组成员关系
选项:
-a user 将user添加至指定组中
-d user 从指定附加组中移除用户user
-A user1,user2,... 设置有管理权限的用户列表
#gpasswd -a wang admins 增加组成员
#gpasswd -d wang admins 删除组成员
groupmems管理附加组成员关系
-g, --group groupname #更改为指定组 (只有root)
-a, --add username #指定用户加入组
-d, --delete username #从组中删除用户
-p, --purge #从组中清除所有成员
-l, --list #显示组成员列表
groups 查看用户组关系

浙公网安备 33010602011771号