马哥教育第一周作业

发布时间 2023-11-25 15:12:47作者: 蜜猿
# 第一周作业
 
1. 总结计算机发展相关,并且总结服务器硬件相关知识。
 
   ~~~ sh
   冯·诺依曼体系: 运算器+控制器=CPU 存储器(一分为数据缓存和指令缓存.二三级缓存.主存(内存),外部存储器) io设备
   图灵模型:是一个抽象的思想模型(计算机的基本理论基础),是一种有穷的、构造性的问题的问题求解思路。背后对应着可计算性理论,告诉我们什么样的问题是计算机解决得了的,什么样的问题是解决不了的。图灵认为凡是能用算法解决的问题也一定能用图灵机解决;
   计算机科学家Niklaus Wirth程序: 数据结构+指令(算法)
   ~~~
 
2. 制作一个教程,说明vmware软件如何下载安装。安装rocky 8.5, ubuntu 22.04,并结合xshell说明如何通过虚拟IP登入系统。
 
   ~~~ sh
   # 安装操作系统的几个注意事项:
   1.最好是安装过程中启用网卡,vm这种环境下,会出现不确定网卡起不来,或者ip获取不到的错误.
   2.磁盘管理/boot./home. /root /  各空间怎么预留
   3.劲量启动lvm逻辑卷管理.不然后面扩展根很难搞.
   ~~~
 
3. 结合man命令总结linux常用基本命令用法,以及查看帮助文档的方法。
 
   ~~~ sh
   背景知识:
   ~]$ which is查看命令的完整路径
   ~]$whereis 用于查找命令的位置
   who 用于显示当前登录用户的信息
   
   ~]$ type 命令,查看命令是否是外部命令
   选项 -a 所有 
       -p 路径
       -t type类型
   # 命令的帮助文档,以及man
   命令帮助文档的存放位置,/usr/share/man/ 路径下,分层section节,和命令.常见的节为: 1可执行程序,2系统调用,3库函数,5配置文件.
   ~]$ man 1[节号] 命令name方式
   
   # 获取帮助
   ls -h --help # 获取帮助,会列出命令的使用方法,或者其他选项或者参数.
   
   通常意义说的库函数和库调用之间啥差别?
   库函数是指代码编写时可以调用的函数,这些函数通常由操作系统或者其他软件提供.可以通过链接库文件方式在程序中使用.
   通过库调用,开发者可以利用已有的库函数来简化开发过程,提高代码的复用性和可维护性。
   
   对于外部命令
   ~]$ 命令名称 --help
   ~~~
 
4. 总结linux文件系统相关知识,并结合操作演示文件操作常见的命令
 
   ~~~ sh
   文件系统:本质来说文件系统是(分区或者其他块设备上的)sector.存储的信息转化为操作系统内核能够识别的文件.的一个软件,是操作系统与底层扇区之间的中间层,是组织和管理管理文件的结构.
   
   文件系统的创建: 即常规意义上说:"磁盘格式化",就是按照文件系统约定的协议,对扇区进行分组管理(分块block)的过程.并对其创建元数据和数据.逻辑卷划分的时候是分pe的过程.
   ~~~
 
   **演示常见添加新硬盘并将其空间扩展至/下的过程**
 
   ~~~ sh
   # 添加新硬盘,(目前大部分服务器均支持热拔插),无须重启系统,识别磁盘.
   lsblk # 未列出刚添加的磁盘
   ll /sys/class/scsi_host/ #查看当前系统中有多少个host目录,多数情况会有一堆目录
   # 编写一个一个循环,向 /sys/class/scsi_host/host{0,n}/scan >  重定向一个 '---'
   scsisum=`ls -l /sys/class/scsi_host/host*|wc -l`
   for ((i=0;i<$(scsisum);i++))
   do
   echo "- - -" > /sys/class/scsi_host/host$(i)/scan
   done
   
   # lsblk就可以查看到硬盘,此处注意,lsblk命令与fdisk命令都有管理磁盘和分区的命令,lsblk侧重于查看,列出块设备(文件系统)层次结构,大小,文件系统类型,挂载点等元数据信息.fdisk 命令侧重更底层,直接有了对对分区表的操作,又来对分区的增删改查调整大小等.
   ~]$ lsblk
   blkid
   #假定获取到的/dev/sdb,对硬盘进行分区,mbr分区/gpt分区格式.mbr分区将硬盘前512个字节用作分区表,这其中446字节为系统引导/boot.分区表64字节,签名2字节,而每个分区需要占用16个字节,因此mbr只能分4个区,三个主分区可以安装操作系统.其余扩展分区,之上再分逻辑分区,其中fdisk命令可以创建mbr分区.分区编号为1-3,4扩展分区,5-n为逻辑分区,自动编号.而GPT分区没有主分区和扩展分区的限制,目前应用场景很少达到其极限.
   
   ~]$ fdisk -l
   # 列出当前系统上磁盘的使用情况.
   echo "- - -" > /sys/class/scsi_host/host$(i)/scan # 记住其中的三个横行之间一定要空格
   ~]$ fdisk /dev/sdb
   m #获取帮助
   n #添加新分区
   w #保存分区且退出
   q #不报存退出
   
   输入n
   Partition type:# 指定分区类型
      p   primary (0 primary, 0 extended, 4 free)#主分区p
      e   extended
   # 默认p,其中前0-2047扇区sector.被占用,从2048开始.
   # 在许多Linux文件系统中,前2048个扇区(1MB)被用作文件系统元数据的保留空间。这些元数据包括文件系统的超级块、块组描述符、iNode表、块位图等。
   采取默认
   输入w,存盘并退出.
   #这里gdisk,与发disk类似,只是分区类型变为GPT分区.
   
   创建文件系统,ext类型的文件系统创建,mkfs
   # fdisk -l查看新加的设备/dev/sdb1
   ~]$ mkfs.ext4 /dev/sdb1
   ~]$ mkfs.xfs /dev/sdb1(或者其他类型的文件系统)# 若未指明文件系统类型,则使用的是默认文件系统ext4.
   
   现在有了两种选择,第一种直接挂载使用,第二种加入已有的lvm中.直接挂不演示.加入lvm
   创建pv
   ~]$ pvcreate /dev/sdb1 #pv创建,本质是在在分区或者磁盘上打上标签,以为着此分区要归lv使用.
   查看vg 卷组 ~]$ vgs
   将pv空间加入vg中
   ~]$ vgextend centos /dev/sdb1 #前面是卷组名,后面是pv名物理卷
   vgs 可以查看
   
   #扩展用于/ 下的逻辑卷的大小.
   lsblk查看,
   lvextend -r -L +5G /dev/mapper/centos-root(文件系统的名字,使用df命令查看)
   # 注意:这个地方,如果直接按照上面命令执行,会产生磁盘空间扩展了,但是文件系统没有扩展,还需要resize2fs /dev/mapper/centos-root(应对ext类型),xfs_growfs /dev/mapper/centos-root(xfs文件系统)
   因此强烈建议在此,加上 -r选项.
   ~~~
 
   ~~~ sh
   # 文件系统 相关的常用命令
   rm -rf ./* 删除文件
   
   cp 源 目标
   mv 源 目标
   mv test.sh /etc/config/test.txt #移动当前目录下test.sh到目标目录下并更名为test.txt
   参数:
   -r 递归复制其子目录
   -i 交互式提示用户
   -u 仅仅复制不存在的文件
   -p 包含原有数据的元数据信息
   -d 包含符号链接属性
   -a 以上多种的组合.
   ~~~
 
   ~~~ sh
   链接文件,软连接(符号链接);硬链接
   软连接: 本质上存储的是这个文件的路径,可以跨越文件系统边界;硬链接的多个文件,以不同的引用指向相同的iNode.可以理解为只是文件的别名.
   ~]$ ln -s <目标文件或目录> <链接名称>
   ~]$ ln -s <目标文件或目录> <链接名称>
   ~~~
 
   
 
5. 总结linux安全模型
 
   ~~~ sh
   网络层面: 使用了iptables或者ipvs规则.
   进程层面: 使用了用户和用户组对资源和权限进行管控
   selinux: 
   系统调用: Linux操作系统采用内核api向应用程序提供调用,不能用户空间进程直接控制硬件.
   ~~~
 
   
 
6.  总结学过的权限,属性及ACL相关命令及选项,示例。
 
   ~~~ sh
   创建用户
   useradd nginx; 创建用户会自动创建同名用户组
   -g 设定用户组 -d 设定家目录 -s 所用的shell
   
   给用户设定用户组
   usermod -G groupname username
   
   给文件设定用户和用户组: 
   chown -R root:root fileName
   
   passwd 用户名; 
   id user;显示用户
   
   cat /etc/passwd 展现用户列表
   
   ~~~
 
   
 
7. 结合vim几种模式,学会使用vim几个常见操作。
 
~~~ sh
#1)如何打开文件。并在打开文件(命令模式)之后如何退出文件。
vim +n fileName 快速定位到65
vim +/pattern filename 光标定位到第一个匹配的行
vim + filename定位到最后一行行首
vim -c "set number" a.test  打开文件,并默认显示行号;或者命令行下:set num
 
#2)打开文件(命令模式)之后1,进入插入模式。并在插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
vim filename
命令模式: i在光标处进入insert模式,o开起一个空行,并进入insert模式.esc退出insert模式.命令行模式:wq保存退出,q!强制退出,q退出.
 
#扩展命令行模式:亦称为最后行模式.操作技巧
:set nu  :set nonu 开起和关闭行号
:set ai  开起自动缩进
:d 删除当前行
:m$ 将当前行移动到文件末尾
:t$ 在文件末尾复制一行
:t 在当前行的下方复制一行.
 
:s/search/replace/g 查找并替换
:s/search/replace/gc 查找并替换,交互式确认.
 
:n 调转到第几行.
:$ 跳转至最后一行.
:r filename 将其他文件内容插入
:! command 执行外部命令
 
/?:
#命令行模式
/pattern
?pattern 下和上搜索
G 之后一行
gg 文件第一行
 
 
可视行模式
大V 进入可视化模式
Ctrl 上下键 y复制 p粘贴 d删除  
 
 
4)使用cat命令验证文件内容,是刚刚自己写的内容。
grep '马哥出品,币属精品' filename
 
~~~
 

第一周作业

  1. 总结计算机发展相关,并且总结服务器硬件相关知识。

    冯·诺依曼体系: 运算器+控制器=CPU 存储器(一分为数据缓存和指令缓存.二三级缓存.主存(内存),外部存储器) io设备
    图灵模型:是一个抽象的思想模型(计算机的基本理论基础),是一种有穷的、构造性的问题的问题求解思路。背后对应着可计算性理论,告诉我们什么样的问题是计算机解决得了的,什么样的问题是解决不了的。图灵认为凡是能用算法解决的问题也一定能用图灵机解决;
    计算机科学家Niklaus Wirth程序: 数据结构+指令(算法)
  1. 制作一个教程,说明vmware软件如何下载安装。安装rocky 8.5, ubuntu 22.04,并结合xshell说明如何通过虚拟IP登入系统。

    # 安装操作系统的几个注意事项:
    1.最好是安装过程中启用网卡,vm这种环境下,会出现不确定网卡起不来,或者ip获取不到的错误.
    2.磁盘管理/boot./home. /root / 各空间怎么预留
    3.劲量启动lvm逻辑卷管理.不然后面扩展根很难搞.
  2. 结合man命令总结linux常用基本命令用法,以及查看帮助文档的方法。

    背景知识:
    ~]$ which is查看命令的完整路径
    ~]$whereis 用于查找命令的位置
    who 用于显示当前登录用户的信息

    ~]$ type 命令,查看命令是否是外部命令
    选项 -a 所有
       -p 路径
       -t type类型
    # 命令的帮助文档,以及man
    命令帮助文档的存放位置,/usr/share/man/ 路径下,分层section节,和命令.常见的节为: 1可执行程序,2系统调用,3库函数,5配置文件.
    ~]$ man 1[节号] 命令name方式

    # 获取帮助
    ls -h --help # 获取帮助,会列出命令的使用方法,或者其他选项或者参数.

    通常意义说的库函数和库调用之间啥差别?
    库函数是指代码编写时可以调用的函数,这些函数通常由操作系统或者其他软件提供.可以通过链接库文件方式在程序中使用.
    通过库调用,开发者可以利用已有的库函数来简化开发过程,提高代码的复用性和可维护性。

    对于外部命令
    ~]$ 命令名称 --help
  3. 总结linux文件系统相关知识,并结合操作演示文件操作常见的命令

    文件系统:本质来说文件系统是(分区或者其他块设备上的)sector.存储的信息转化为操作系统内核能够识别的文件.的一个软件,是操作系统与底层扇区之间的中间层,是组织和管理管理文件的结构.

    文件系统的创建: 即常规意义上说:"磁盘格式化",就是按照文件系统约定的协议,对扇区进行分组管理(分块block)的过程.并对其创建元数据和数据.逻辑卷划分的时候是分pe的过程.

    演示常见添加新硬盘并将其空间扩展至/下的过程

    # 添加新硬盘,(目前大部分服务器均支持热拔插),无须重启系统,识别磁盘.
    lsblk # 未列出刚添加的磁盘
    ll /sys/class/scsi_host/ #查看当前系统中有多少个host目录,多数情况会有一堆目录
    # 编写一个一个循环,向 /sys/class/scsi_host/host{0,n}/scan > 重定向一个 '---'
    scsisum=`ls -l /sys/class/scsi_host/host*|wc -l`
    for ((i=0;i<$(scsisum);i++))
    do
    echo "- - -" > /sys/class/scsi_host/host$(i)/scan
    done

    # lsblk就可以查看到硬盘,此处注意,lsblk命令与fdisk命令都有管理磁盘和分区的命令,lsblk侧重于查看,列出块设备(文件系统)层次结构,大小,文件系统类型,挂载点等元数据信息.fdisk 命令侧重更底层,直接有了对对分区表的操作,又来对分区的增删改查调整大小等.
    ~]$ lsblk
    blkid
    #假定获取到的/dev/sdb,对硬盘进行分区,mbr分区/gpt分区格式.mbr分区将硬盘前512个字节用作分区表,这其中446字节为系统引导/boot.分区表64字节,签名2字节,而每个分区需要占用16个字节,因此mbr只能分4个区,三个主分区可以安装操作系统.其余扩展分区,之上再分逻辑分区,其中fdisk命令可以创建mbr分区.分区编号为1-3,4扩展分区,5-n为逻辑分区,自动编号.而GPT分区没有主分区和扩展分区的限制,目前应用场景很少达到其极限.

    ~]$ fdisk -l
    # 列出当前系统上磁盘的使用情况.
    echo "- - -" > /sys/class/scsi_host/host$(i)/scan # 记住其中的三个横行之间一定要空格
    ~]$ fdisk /dev/sdb
    m #获取帮助
    n #添加新分区
    w #保存分区且退出
    q #不报存退出

    输入n
    Partition type:# 指定分区类型
      p   primary (0 primary, 0 extended, 4 free)#主分区p
      e   extended
    # 默认p,其中前0-2047扇区sector.被占用,从2048开始.
    # 在许多Linux文件系统中,前2048个扇区(1MB)被用作文件系统元数据的保留空间。这些元数据包括文件系统的超级块、块组描述符、iNode表、块位图等。
    采取默认
    输入w,存盘并退出.
    #这里gdisk,与发disk类似,只是分区类型变为GPT分区.

    创建文件系统,ext类型的文件系统创建,mkfs
    # fdisk -l查看新加的设备/dev/sdb1
    ~]$ mkfs.ext4 /dev/sdb1
    ~]$ mkfs.xfs /dev/sdb1(或者其他类型的文件系统)# 若未指明文件系统类型,则使用的是默认文件系统ext4.

    现在有了两种选择,第一种直接挂载使用,第二种加入已有的lvm中.直接挂不演示.加入lvm
    创建pv
    ~]$ pvcreate /dev/sdb1 #pv创建,本质是在在分区或者磁盘上打上标签,以为着此分区要归lv使用.
    查看vg 卷组 ~]$ vgs
    将pv空间加入vg中
    ~]$ vgextend centos /dev/sdb1 #前面是卷组名,后面是pv名物理卷
    vgs 可以查看

    #扩展用于/ 下的逻辑卷的大小.
    lsblk查看,
    lvextend -r -L +5G /dev/mapper/centos-root(文件系统的名字,使用df命令查看)
    # 注意:这个地方,如果直接按照上面命令执行,会产生磁盘空间扩展了,但是文件系统没有扩展,还需要resize2fs /dev/mapper/centos-root(应对ext类型),xfs_growfs /dev/mapper/centos-root(xfs文件系统)
    因此强烈建议在此,加上 -r选项.
    # 文件系统 相关的常用命令
    rm -rf ./* 删除文件

    cp 源 目标
    mv 源 目标
    mv test.sh /etc/config/test.txt #移动当前目录下test.sh到目标目录下并更名为test.txt
    参数:
    -r 递归复制其子目录
    -i 交互式提示用户
    -u 仅仅复制不存在的文件
    -p 包含原有数据的元数据信息
    -d 包含符号链接属性
    -a 以上多种的组合.
    链接文件,软连接(符号链接);硬链接
    软连接: 本质上存储的是这个文件的路径,可以跨越文件系统边界;硬链接的多个文件,以不同的引用指向相同的iNode.可以理解为只是文件的别名.
    ~]$ ln -s <目标文件或目录> <链接名称>
    ~]$ ln -s <目标文件或目录> <链接名称>

     

  4. 总结linux安全模型

    网络层面: 使用了iptables或者ipvs规则.
    进程层面: 使用了用户和用户组对资源和权限进行管控
    selinux:
    系统调用: Linux操作系统采用内核api向应用程序提供调用,不能用户空间进程直接控制硬件.

     

  5. 总结学过的权限,属性及ACL相关命令及选项,示例。

    创建用户
    useradd nginx; 创建用户会自动创建同名用户组
    -g 设定用户组 -d 设定家目录 -s 所用的shell

    给用户设定用户组
    usermod -G groupname username

    给文件设定用户和用户组:
    chown -R root:root fileName

    passwd 用户名;
    id user;显示用户

    cat /etc/passwd 展现用户列表

     

  6. 结合vim几种模式,学会使用vim几个常见操作。

#1)如何打开文件。并在打开文件(命令模式)之后如何退出文件。
vim +n fileName 快速定位到65
vim +/pattern filename 光标定位到第一个匹配的行
vim + filename定位到最后一行行首
vim -c "set number" a.test 打开文件,并默认显示行号;或者命令行下:set num

#2)打开文件(命令模式)之后1,进入插入模式。并在插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
vim filename
命令模式: i在光标处进入insert模式,o开起一个空行,并进入insert模式.esc退出insert模式.命令行模式:wq保存退出,q!强制退出,q退出.

#扩展命令行模式:亦称为最后行模式.操作技巧
:set nu :set nonu 开起和关闭行号
:set ai 开起自动缩进
:d 删除当前行
:m$ 将当前行移动到文件末尾
:t$ 在文件末尾复制一行
:t 在当前行的下方复制一行.

:s/search/replace/g 查找并替换
:s/search/replace/gc 查找并替换,交互式确认.

:n 调转到第几行.
:$ 跳转至最后一行.
:r filename 将其他文件内容插入
:! command 执行外部命令

/?:
#命令行模式
/pattern
?pattern 下和上搜索
G 之后一行
gg 文件第一行


可视行模式
大V 进入可视化模式
Ctrl 上下键 y复制 p粘贴 d删除


4)使用cat命令验证文件内容,是刚刚自己写的内容。
grep '马哥出品,币属精品' filename