• 【Linux私房菜】第七期——尾声


    一、网络配置

    🌔1.NAT网络原理图

    请添加图片描述

    在主机中的Linux虚拟机与VM虚拟机之间的网络是互通的,不过Linux的虚拟机IP可能会发生变换【无论如何变化都与VM虚拟机处于一个局域网下】

    VM虚拟机依靠电脑主机的无线网卡为代理,进而访问外部的网络


    🌔2.有关网络的基本命令

    (1)查看网络配置信息

    在Linux操作系统中,通过ifconfig命令来查看

    在Windows操作系统中,通过ipconfig命令来查看

    (2)检测网络连通性

    通过ping 目的主机来检测当前服务器与目的主机之间的连通性


    🌔3.Linux网络环境配置

    • 默认情况下是依靠DHCP自动获取IP地址的,那么我们如何固定服务器的IP呢?

    (1)修改/etc/sysconfig/newwork-scripts/ifcfg-ens33配置文件【利用vim编辑器】

    (2)修改内容如下:

    将IP配置方法修改为静态分配IP:找到BOOTPROTO将其值修改为static

    添加或修改指定的IP地址:IPADDR=192.168.132.139

    添加或修改指定的网关:GATEWAY=192.168.132.2

    添加或修改域名解析器:DNS1=192.168.132.2

    修改完Linux的服务器后,要去修改VM的IP来保证服务器与VM的连通性

    找到虚拟网络编辑器,修改子网IP为新网关IP

    再修改NAT配置信息,修改网关IP为新网关IP

    (3)配置成功后,可以通过service network restart指令重启网络服务 或 通过reboot指令重启系统生效

    (4)利用Dos和Linux虚拟机互相Ping可以检测连通性,利用ipconfig和ifconfig分别检查VM和Linux虚拟机的IP是否正确


    🌔4.设置主机名和host映射

    (1)通过hostname指令可以查看主机名

    (2)通过vim /etc/hostname指令可以修改主机名

    (3)那么如何建立主机名与IP地址之间的映射呢?【修改配置文件】

    如果要在Windows主机中建立映射,那么就修改Windows的C:\Windows\System32\drivers\etc\hosts文件,添加一行文本信息IP地址 主机名

    如果要在Linux虚拟机中建立映射,那么就修改Linux的\etc\hosts文件,添加一行文本信息IP地址 主机名


    🌔5.主机名解析过程分析

    • Hosts:一个记录IP和Hostname映射关系的文本文件
    • DNS:一个记录域名和IP地址相互映射的分布式数据库【域名系统】
    • 主机访问某域名的解析过程:

    请添加图片描述

    (1)先检查本地解析器缓存中是否有域名与IP映射的缓存,如果有则返回,没有则进行下一步寻找

    (2)再检查系统中hosts文件中是否有域名与IP映射的配置,如果有则返回,没有则进行下一步寻找

    (3)最后到DNS解析器中寻找,找到则返回,没有则给出提示信息。


    二、进程管理

    • 在Linux中,每个执行的程序都称为一个进程。【每个进程都有一个唯一的PID进程号】
    • 每个进程都可能以前台或后台两种方式存在【前台是指才屏幕上看到的,后台是看不到的】
    • 一般系统服务都是以后台进程的方式存在,而且常驻系统中直至关机

    🌔1.那么如何查看进程信息呢?

    (1)可以通过ps指令查看当前系统中正在运行的进程

    请添加图片描述

    四个参数分别代表:进程号、终端机号、消耗CPU的时间、启动进程所需要的命令及参数

    (2)该指令有三个可以选择的选项:

    通过-a选项可以显示当前终端中的所有进程信息

    通过-u选项可以以用户的格式显示进程信息

    通过-x选项可以显示后台进程运行的参数

    请添加图片描述

    (3)后台进程的这些参数分别代表什么?

    请添加图片描述

    符号含义
    USER进程执行用户
    PID进程号
    %CPUCPU占用率
    %MEH物理内存占用率
    VSZ占用虚拟内存大小
    RSS占用物理内存大小
    TTY终端名称(缩写)
    STAT进程状态(SNRDZT)
    START进程启动时间
    TIME进程使用CPU总时间
    COMMAND启动进程所用的命令和参数

    进程状态有分为一下几种情况: S 代表睡眠,N代表进程比普通优先级更低,R代表正在运行,D代表短期等待,Z代表僵死进程,T代表被跟踪或停止,s表示该进程是会话的先导进程

    (4)通过-ef选项可以以长格式显示当前所有进程,进而可以查看进程的父进程PPID【e全部、f长格式】

    请添加图片描述


    🌔 2.如何终止进程呢?

    通过kill 进程号指令可以杀死指定进程,也可以通过killall 进程名指令杀死指定进程。

    不过后者会同时杀死由该进程创建的全部子进程。

    当系统认为要杀死的进程处于保护状态时,则命令会执行失败并不会有任何的提示消息。我们可以通过选项-9来强制杀死进程。


    🌔 3.有没有什么更直观的方式显示父子进程呢?

    通过pstree指令可以将所有进程信息以树状的形式显示出来。

    通过选项-p可以在进程后面附属上进程号信息

    通过选项-u可以在进程后面附属上所属用户信息

    请添加图片描述


    🌔4.服务管理

    • 服务的本质就是运行在后台的一个进程,通常都会监听某个端口,等待其他程序的请求。【守护进程】
    • 都是通过端口号来访问这些服务的,例如SSHD、MySQL、防火墙等。

    请添加图片描述

    (1)service 管理指令

    通过service 服务名 参数指令来修改指定服务的状态【参数有四个:start | stop | restart | reload | status】

    在centOS之后,service指令基本被systemctl替代,剩余管理的服务可以在/etc/init.d中查看

    请添加图片描述

    (2)服务的运行级别

    请添加图片描述

    开机的流程:开机、BIOS、/boot、systemd进程、运行级别、运行级别对应服务

    通过systemctl get-default指令可以获取当前默认的运行级别;

    通过systemctl set-default指令可以设置当前默认的运行级别。【multi-user.target 3级、graphical.target 5级】

    通过chkconfig指令可以给服务的各个运行级别设置自启动/关闭 【也是/etc/init.d 中的】

    查看服务 chkconfig 服务名 --list

    修改服务指定运行级别的自启动 chkconfig --level n 服务名 on/off



    (3)systemctl 管理命令

    通过systemctl 参数 服务名指令可以修改服务的状态【参数为 start | stop | restart | status】

    该指令管理的服务在/usr/lib/systemd/system中【部分截图】

    请添加图片描述

    (4)通过systemctl指令也可以设置服务的自启动状态【开机自启动】

    指令作用
    systenctl list-unit-files | grep 服务名查看指定服务的开机自启动状态
    systemctl enable 服务名为指定服务设置开机自启动
    systemctl disable 服务名为指定服务关闭开机自启动
    systemctl is-enabled 服务名查询指定服务是否为开机自启动

    防火墙的基本原理

    请添加图片描述

    (5)通过firewall指令可以打开、关闭端口

    指令作用
    firewall-cmd--permanent--add-port=端口号/协议打开端口
    firewall-cmd–permanent–remove-port=端口号/协议关闭端口
    ·firewall-cmd--reload重新载入(使修改生效)
    firewall-cmd-query-port=端口/协议查询端口是否开放

    🌔5.那么是否可以动态的显示进程信息呢?

    (1)通过top指令可以动态的显示进程信息

    (2)该指令有三个选项:

    -d 秒数指令秒数动态刷新,默认是三秒一刷新

    -i使top不显示僵死进程和闲置进程

    -p通过指定进程ID来监控某个进程的状态

    (3)参数解释

    请添加图片描述

    参数含义
    top当前系统时间
    up开机时间
    users系统中用户个数
    load averageCPU负载情况(三者的平均不大于0.7就正常)
    Tasks当前系统中任务数
    running正在运行的任务
    sleeping闲置的任务
    stopped终止的任务
    zombie僵死的任务(任务已经终止,但是还没有释放资源)
    %CPUCPU使用率
    KiB Memmemory内存使用情况
    KiB Swapswap内存使用情况

    (3)该指令同时也提供一些交互操作【当使用该指令进入到进程显示页面之后】

    操作功能
    P以CPU使用率排序【默认情况】
    M以内存使用率排序
    N以进程号大小排序
    q退出top

    以上都是降序排序

    (4)该指令同时为我们提供一些组合交互操作

    • 可以监控指定用户的进程,使用top指令后输入u 用户名
    • 可以在top页面终止指定进程,输入k 进程号 9

    🌔 6.也可以对网络信息进行监控

    可以通过netstat指令查看网络信息,不过为了更直观的监视系统网络情况,我们都配合选项使用。

    请添加图片描述

    通过-an选项 可以按照一定顺序显示,通过-p选项 可以显示是哪个进程再调用

    请添加图片描述

    Proto 代表网络协议、Recv-Q 代表接受的、Send-Q 代表发送的、LocalAddress 代表本地地址、ForeignAddress 代表外部地址、State 代表状态、PI 代表进程号

    以windows中的shell软件来访问虚拟机为例【IP后的为端口号,在同一时间不会出现相同的端口号】

    请添加图片描述


    三、RPM与YUM

    🌔 1.什么是RPM?

    用于互联网下载包的打包及安装工具。

    🌔 2.通过rpm -qa可以查看已经安装的rpm列表,如果想查看是否安装了某软件,可以通过管道结合grep指令筛选查看

    请添加图片描述

    firefox就是rpm包名、60.2.2.1就是它的版本号、el7.centos.x86_64就是它的操作系统【可以看出是64位的操作系统,如果为i686、i386代表32位的,如果noarch表示通用】

    🌔 3.rpm提供了一些选项

    选项作用
    -qa查询安装的所有rpm软件包
    -q查看指定软件包是否安装
    -qi查看指定软件包的信息
    -ql查看指定软件包中的文件
    -qf查询指定文件属于哪个软件包

    请添加图片描述
    请添加图片描述
    请添加图片描述
    请添加图片描述

    🌔 4.那么我们如何卸载rpm包呢?

    可以通过rpm -e 包名指令卸载指定的包,如果有提示信息不能直接删除,可以添加参数--nodeps就可以强制删除【有提示信息一般为其他包与这个包有依赖关系,提示你删除当前包可能导致另一个软件无法正常使用】

    🌔 5.那么我们如何安装rpm包呢?

    通过rpm -ivh RPM包的完整路径指令就可以安装指定的RPM包。

    i 代表 install安装、v 代表 verbose提示、h 代表 hash显示进度条

    🌔 6.那么我们如何去寻找RPM包呢?

    请添加图片描述

    在桌面点开光盘,进入到Packages目录,点击上方搜索,输入要搜索的RPM包即可。【可以将需要的RPM包移动到opt目录,然后通过指令安装即可】

    🌔 7.那么什么是YUM呢?

    一个基于RPM软件包管理的前端软件包管理器,能够从指定服务器自动下载RPM包并安装,可以自动处理依赖关系,一次性下载所有依赖包【如果涉及使用其他的包,就会将其他包同时下载下来】

    🌔 8.通过yum list | grep xxx查询服务器中是否有自己指定的RPM包,通过yum install xxx指令可以从服务器下载并安装指定的RPM包

    如果查询出来有多个版本的话,利用yum下载安装会自动选择适配的版本。
    请添加图片描述


    四、日志管理

    • 日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。
    • 通过日志可以检查发生错误的原因,也可以检查被攻击时攻击者留下的痕迹
    • 日志是记录重大事件的工具

    🐟 1.通常被保存在/var/log目录下

    请添加图片描述

    🐟 2.重要日志文件说明

    请添加图片描述


    🐟 3.CentOS7.6的日志服务是rsyslogd,6.x版本采用的是syslogd【两者的服务是兼容的】

    Linux操作系统就是,才能通过该服务来完成日志的存储的【原理图如下】

    请添加图片描述

    🐟 4.要确保rsyslogd服务是启动状态,才能自动存储相关的日志文件。

    通过 ps -aux | grep rsyslogd指令可以查看该服务的进程【下面那条是我们查询该进程的进程,可以通过-v反选过滤掉】

    请添加图片描述

    通过systemctl list-unit-files | grep "rsyslog"指令可以查看该服务是否为自启动

    请添加图片描述

    也可以通过systemctl is-enabled rsyslog指令查看是否为自启动
    请添加图片描述


    🐟 5.那么rsyslogd如何将文件与日志对应起来呢?/etc/rsyslog.conf配置文件】

    请添加图片描述

    🐟 6.日志文件记录的信息都代表什么含义呢?

    日志信息分为四列:事件的时间、产生事件的主机名、产生事件的服务或程序名、事件的描述

    请添加图片描述

    🐟 7.那么可以自定义日志服务吗?

    我们可以修改/etc/rsyslog.conf文件,添加指定的日志类型筛选并存储到指定的目录下【参照5中的格式】

    🐟 8.如果随着日志存储量不断的扩大,最后是否会影响虚拟机的性能呢?

    • 答案是不会的,centOS提供logrotate服务来实现日志轮替功能。

    • 日志轮替就是将旧日志移动并改名,同时建立新的空日志文件,当旧日志文件超出一定范围后,就会将早期的日志文件删除

    • 通过/etc/logrotate.conf配置文件的dateext参数可以实现自动改名,日志会采用日期作为日志文件的后缀

    (1)/etc/logrotate配置文件的内容

    请添加图片描述

    /etc/longtote.conf文件中,参数的含义为:

    **weekly **代表每周对文件更新一次、rotate 4 代表存储四份日志文件,超过就会删除旧的、create 代表创建新的空日志文件在日志轮替后、dateext 代表使用日期作为日志文件的后缀、**compress **代表转储的同时会进行压缩、**include /etc/logrotate.d **代表同时会将子目录的配置文件读取进来。

    下面带大括号的就是针对某个日志文件设置的日志轮替规则。如果我们自定义的日志轮替规则,要写道/etc/logtate.d中。

    (2)logtate 配置文件的参数说明

    请添加图片描述

    (3)那么日志轮替是怎么实现的呢?

    是通过定时机制实现的,在/etc/cron.adily/目录下通过logtate文件来定时执行日志轮替的

    请添加图片描述

    (4)如何查看内存日志呢?【日志是先存储都内存中,后存储到磁盘中】

    通过journalctl指令可以查看当前全部的内存日志,也可以结合选项来使用

    选项作用
    -n num查看最新的num条
    –since time1 --util time2查看起始时间都结束时间的日志
    -p err查看报错日志
    -o verbase查看日志的详细内容
    _PID=number _COMM=service查看进程号为number,描述包含service的日志

    五、Linux内核

    (1)Linux启动过程

    请添加图片描述


    (2)Linux最早版本的内核的main函数

    请添加图片描述

    (3)0.0.1内核的模块介绍

    请添加图片描述

    模块作用
    boot和系统引导相关的代码
    fs存放Linux支持的文件系统
    include存放Linux核心需要的头文件
    kernel存放和系统内核相关的源码
    lib存放库代码
    mm和内存管理相关的代码

    (4)Linux内核升级【只能升级到兼容的最新版本】

    通过username -a可以查看当前内核的版本

    通过yum info kernel -q检测内核版本,显示可以升级的内核

    通过yum update kernel可以升级内核

    通过yum list kernel -q可以查看已经安装了那些内核

    这个更新内核并不是将原来的内核删掉换上新内核,而是在启动Linux系统的时候可以进行选择,原来所有文件共享。


    六、数据备份与恢复

    🐟 1.在Linux中如何实现数据的备份与恢复呢?

    (1)通过 tar 指令将分区、目录或文件打包,当需要数据恢复的时候再重新解包【这种方法比较耗费空间而且不方便】

    (2)为Linux安装两个软件包,借助dumprestore来完成备份和恢复

    通过yum -y install dump指令就可以将这两个依赖包同时下载并安装【-y选项的作用是对下载并安装的过程中的所有提问都回答yes】


    🐟 2.通过dump 选项 待备份部分指令就可以完成备份,支持分卷备份和增量备份【前者为完整备份,后者为基于上次备份的差异进行备份】

    (1)语法格式如下:

    请添加图片描述

    (2)案例分析:

    • 将/boot分区所有内容备份到/opt/boot.bak0.bz2文件中,备份层级为"0”
    dump -0uf /opt/boot.bak0.bz2 /opt
    
    • 1
    • 在boot分区下创建一个文件,基于上次的备份再次进行备份,备份层级为“1”
    touch /opt/newfile.txt 
    dump -1uf /opt/boot.bak1.bz2 /opt
    
    • 1
    • 2
    • 查看两次的备份文件可以看出增量文件和完整备份的文件大小差距非常的大

    请添加图片描述

    • 需要注意目录和文件不支持增量备份,也就是说c只能为零,而且不支持u参数

    (3)每次备份的记录都存储到/etc/dumpdates中,可以查看备份的时间

    cat /etc/dumpdates
    
    • 1

    请添加图片描述

    如果只是想查看最后一次的备份信息,可以通过dump -W指令来实现

    请添加图片描述



    🐟 3.通过restore 模式选项 选项指令可以根据备份恢复数据,如果是增量备份那么就要按顺序依次恢复所有的增量备份

    (1)模式选项【主要为四个模式】

    通过-C模式选项可以对比出备份文件与当前系统情况有哪些差别

    通过-i模式选项在还原备份文件时会询问用户要不要进行那些操作

    通过-r模式选项就是直接还原指定的备份文件

    通过-t模式选项可以查看备份文件中有哪些内容

    (2)选项说明【这个选项是必选】

    通过-f 待备份选项指明了要备份的是什么

  • 相关阅读:
    操作系统读者-写者问题中算是允许多个进程进入临界区吗
    SpringBoot加载静态资源
    反转链表和哨兵位
    Easypoi生成excel并上传到文件服务器
    AX6000路由器更改算号器密码为自定义密码的方法
    二叉树相关OJ - C++
    汉字风格迁移篇--中文字体的多任务对抗学习
    【rosrun diagnostic_analysis】报错No module named rospkg | ubuntu 20.04
    【前端】yarn介绍和使用
    外包公司“混”了2年,我只认真做了5件事,如今顺利拿到阿里 Offer。
  • 原文地址:https://blog.csdn.net/qq_61323055/article/details/126991302