1.一个完整的计算机系统的简要介绍

计算机系统包括硬件系统和软件系统两大部分。

其中硬件系统是借助电、磁、光、机械等原理构成的各种物理部件的有机组合,硬件系统是计算机系统的内核,是进行信息处理的实际物理装置,包括运算器、控制器、存储器、输入设备、输出设备五大部分。

软件系统是用于连接人与硬件系统间的接口界面,主要包括系统软件、支撑软件、应用软件。

N74第一周作业_文件系统

现在大部分计算机都是冯诺依曼架构。

N74第一周作业_文件系统_02

控制器:指挥系统

运算器:数学和逻辑运算

存储器:存储信息

输入设备:接收外部信息

输出设备:输出计算机内部信息到外部设备

2.进制的转换

例:将十进制的168转换为二进制

第一步,将168除以2,商84余数为0。

第二步,将商84除以2,商42余数为0。

第三步,将商42除以2,商21余数为0。

第四步,将商21除以2,商10余数为1。

第五步,将商10除以2,商5余数为0。

第六步,将商5除以2,商2余数为1。

第七步,将商2除以2,商1余数为0。

第八步,将商1除以2,商0余数为1。

第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000


方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。


例:将0.125换算为二进制

第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25。

第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5。

第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0。

第四步,读数,从第一位读起,读到最后一位,即为0.001。


方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分 为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数。

例:将二进制数101.101转换为十进制数

得出结果:(101.101)2=(5.625)10

整数部分以2为底,小数部分是2为底的倒数


方法:按权相加法,即将二进制每位上的数乘以权,然后相加之和即是十进制数。

3.VMware下载与安装

​​​https://download3.vmware.com/software/WKST-1700-WIN/VMware-workstation-full-17.0.0-20800274.exe​

激活码 JU090-6039P-08409-8J0QH-2YR7F

4.GPL与MIT协议的区别

编译的代码里用了GPL的代码,都必须开源。而MIT支持闭源的后续开发。

N74第一周作业_软链接_03

5.制作Rocky 与Ubuntu系统的安装教程,并结合xshell说明如何通过虚拟IP登入系统

6.Tab键补全命令以及补全路径的原理

命令补全:Bash先匹配是否是内部命令,再根据PATH环境变量定义的路径,自左而右在每个路径搜寻已给定命令名命名的文件,第一次找到的命令即为要执行的命令。

命令的子命令补全,需要安装bash-completion。

路径补全:把用户给出的字符串当做路径开头,并在其指定上级目录下搜索已指定的字符串开头的文件名。

7.内部命令和外部命令的区别,以及如何获得帮助

内部命令:由Shell自带的,而且通过某命令形式提供,用户登录后自动加载并常驻内存中

外部命令:在文件系统路径下有对应的可执行程序文件,当执行命令时才从磁盘加载至内存中,执行完毕后从内存中删除

内部命令的帮助:help CMD ;man CMD

外部命令的帮助:CMD --help;man CMD;info CMD;Readme;官方文档;技术论坛;搜索引擎

8.Linux命令行快捷键

1)快速跳转到行首Ctrl+a

快速跳转到行尾Ctrl+e

快速删除当前光标到行尾Ctrl+k

快速删除当前光标到行首Ctrl+u

快速取消执行命令Ctrl+c

9.Linux目录结构

N74第一周作业_软链接_04

/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 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

/root:

该目录为系统管理员,也称作超级权限者的用户主目录

/sbin:

s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。

/selinux:

这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv:

该目录存放一些服务启动之后需要提取的数据。

/sys:

这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

/tmp:

tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。

/usr:

usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

/usr/bin:

系统用户使用的应用程序。

/usr/sbin:

超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src:

内核源代码默认的放置目录。

/var:

var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。

值得提出的是 /bin、/usr/bin 是给系统用户使用的指令(除 root 外的通用用户),而/sbin, /usr/sbin 则是给 root 使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

10.文件通配符

*代表任意多个字符

? 代表任意单个字符

[0-9]可以代表0-9之间的任意一个数字

{a...z}  匹配指定的单个字母,如果没有匹配项会报错

[:alnum:]所有数字+字母

[:alpha:]所有字母,大小写

[:blank:]水平空白字符

[:digit:]所有数字

[:graph:]图形字符

[:lower:]所有小写字母

[:punct:]标点符号

[:space:]水平或垂直空白字符

[:upper:]所有大写字母

11.文件系统如何根据用户输入的路径查找到磁盘上的文件的过程

在目录中通过文件名找到对应的Inode号码,然后获取到这个Inode的信息,最后根据这些信息找到文件数据所在磁盘数据区中的block(块),读出数据。

12.硬链接和软链接的原理

硬链接本质上就给一个文件起一个新的名称,实质是同一文件。

  • 创建硬链接会在对应的目录中增加额外的记录项以引用文件。
  • 对应于同一文件系统上一个物理文件。
  • 每个目录引用相同的inode号。
  • 创建时链接数递增。
  • 删除文件时,rm命令递减计数的链接,文件要存在,至少有一个链接数,当链接数为零时,该文件被删除。
  • 不能跨驱动器或分区。
  • 不支持对目录创建硬链接。

ln filename [linkname]

软链接指向另一个文件,就像Windows中快捷方式,软链接文件和原文件本质上不是同一个文件。

  • 一个符号链接的内容是它引用文件的名称
  • 可以对目录创建软链接
  • 可以跨分区的文件实现
  • 指向的是另一个文件的路径,其大小为指向的路径字符串的长度,不增加或减少目标文件inode的引用计数
  • 在创建软链接时,如果源文件使用相对路径,是相对于软链接文件的路径,而非相对于当前工作日录,但是软链接的路径如果是相对路径,则是相对于当前工作目录。

ln -s filename [linkname]

13.Linux命令管理工作流程

别名(alias)>内部命令>外部命令hash表>环境变量PATH从左往右搜索

14.标准输入,标准输出,标准错误输出的区别

标准输入(STDIN)  -0  默认接受来自终端窗口的输入

标准输出(STDOUT)-1 默认输出到终端窗口

标准错误(STDERR) -2 默认输出到终端窗口


15.用户,组,权限相关的命令及选项

useradd(选项)(参数)

-b, --base-dir BASE_DIR  # 如果未指定 -d HOME_DIR,则系统的默认基本目录。如果未指定此选项,useradd 将使用 /etc/default/useradd 中的 HOME 变量指定的基本目录,或默认使用 /home。
-c, --comment COMMENT # 加上备注文字。任何文本字符串。它通常是对登录名的简短描述,目前用作用户全名的字段。
-d, --home HOME_DIR # 将使用 HOME_DIR 作为用户登录目录的值来创建新用户。
-D, --defaults # 变更预设值。
-e, --expiredate EXPIRE_DATE # 用户帐户将被禁用的日期。 日期以 YYYY-MM-DD 格式指定。
-f, --inactive INACTIVE # 密码过期后到帐户被永久禁用的天数。
-g, --gid GROUP # 用户初始登录组的组名或编号。组名必须存在。组号必须引用已经存在的组。
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]] # 用户也是其成员的补充组列表。每个组用逗号隔开,中间没有空格。
-h, --help # 显示帮助信息并退出。
-k, --skel SKEL_DIR # 骨架目录,其中包含要在用户的主目录中复制的文件和目录,当主目录由 useradd 创建时。
-K, --key KEY=VALUE # 覆盖 /etc/login.defs 默认值(UID_MIN、UID_MAX、UMASK、PASS_MAX_DAYS 等)。
-l, --no-log-init # 不要将用户添加到 lastlog 和 faillog 数据库。
-m, --create-home # 如果用户的主目录不存在,则创建它。
-M # 不要创建用户的主目录,即使 /etc/login.defs (CREATE_HOME) 中的系统范围设置设置为 yes。
-N, --no-user-group # 不要创建与用户同名的组,而是将用户添加到由 -g 选项或 /etc/default/useradd 中的 GROUP 变量指定的组中。
-o, --non-unique # 允许创建具有重复(非唯一)UID 的用户帐户。 此选项仅在与 -o 选项结合使用时有效。
-p, --password PASSWORD # crypt(3) 返回的加密密码。 默认是禁用密码。
-r, --system # 创建一个系统帐户。
-s, --shell SHELL # 用户登录 shell 的名称。
-u, --uid UID # 用户 ID 的数值。
-U, --user-group # 创建一个与用户同名的组,并将用户添加到该组。
-Z, --selinux-user SEUSER # 用户登录的 SELinux 用户。 默认情况下将此字段留空,这会导致系统选择默认的 SELinux 用户。

usermod(选项)(参数)

-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录,只是修改/etc/passwd中用户的家目录配置信息,不会自动创建新的家目录,通常和-m一起使用;
-m<移动用户家目录>:移动用户家目录到新的位置,不能单独使用,一般与-d一起使用。
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s<shell>:修改用户登入后所使用的shell;
-u<uid>:修改用户ID;
-U:解除密码锁定。

userdel(选项)(参数)

-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。

groupadd(选项)(参数)

-g:指定新建工作组的id;
-r:创建系统工作组,系统工作组的组ID小于500;
-K:覆盖配置文件“/etc/login.defs”;
-o:允许添加组ID号不唯一的工作组。

groupmod(选项)(参数)

-g<群组识别码>:设置欲使用的群组识别码;
-o:重复使用群组识别码;
-n<新群组名称>:设置欲使用的群组名称。

groupdel(参数)

chown(选项)(参数)

-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--help:在线帮助;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
--version:显示版本信息。

chgrp [选项][组群][文件|目录]

-R 递归式地改变指定目录及其下的所有子目录和文件的所属的组
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
-H如果命令行参数是一个通到目录的符号链接,则遍历符号链接
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-L遍历每一个遇到的通到目录的符号链接
-P不遍历任何符号链接(默认)
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;

chmod [OPTION]... MODE[,MODE]... FILE...

chmod [OPTION]... OCTAL-MODE FILE...

chmod [OPTION]... --reference=RFILE FILE...

-c, --changes:当文件的权限更改时输出操作信息。
--no-preserve-root:不将'/'特殊化处理,默认选项。
--preserve-root:不能在根目录下递归操作。
-f, --silent, --quiet:抑制多数错误消息的输出。
-v, --verbose:无论文件是否更改了权限,一律输出操作信息。
--reference=RFILE:使用参考文件或参考目录RFILE的权限来设置目标文件或目录的权限。
-R, --recursive:对目录以及目录下的文件递归执行更改权限操作。
--help:显示帮助信息并退出。
--version:显示版本信息并退出。