Linux 高级篇 日志管理、定制自己的Linux系统、备份与恢复

一、日志管理

(1)基本介绍

  1. 日志文件是重要的系统信息文件,记录了如用户登录、系统启动、系统安全、邮件及各种服务等相关重要系统事件
  2. 在安全方面,日志也至关重要,它能记录系统日常发生的各类事情,可用于检查错误原因以及追踪攻击者留下的痕迹
  3. 总体而言,日志是用于记录重大事件的工具

(2)系统常用的日志

  1. /var/log/目录就是系统日志文件的保存位置,看张图
  2. 系统常用日志
    日志文件名功能查看命令
    boot.log记录系统启动时程序、服务加载及错误等信息cat /var/log/boot.log
    cron记录定时任务执行情况,如是否按时完成、有无报错cat /var/log/cron
    cups记录打印任务提交和打印机状态,如卡纸等问题cat /var/log/cups
    dmesg记录内核启动及运行中的硬件检测等关键信息dmesg 或 cat /var/log/dmesg
    btmp记录失败的登录尝试,可发现恶意登录行为lastb
    lastlog记录每个用户最近一次的登录时间lastlog
    maillog记录邮件发送、接收等邮件系统活动信息cat /var/log/maillog
    messages记录系统启动及运行的一般事件、警告和错误cat /var/log/messages
    secure记录用户登录认证、sudo 使用等安全相关事件cat /var/log/secure
    wtmp记录用户登录注销和系统启动关闭等事件last
    utmp记录当前登录用户和进程信息who 或 w 或 users

(3)日志管理服务

  1. CentOS7.6日志服务是rsyslogd,CentOS6.x日志服务是syslogd。rsyslogd功能更强大。
    rsyslogd的使用、日志文件的格式,和syslogd服务兼容的
  2. 原理示意图:                                                                                                                             
  3. 查看Linux中的rsyslogd服务是否启动
    ps -aux|grep rsyslog|grep -v grep
  4. 查询rsyslogd服务的自启动状态
  5. rsyslogd服务的配置文件:/etc/rsyslog.conf
    1. 编辑文件时的格式为:*.*         存放日志文件
    2. 其中第一个*代表日志类型,第二个*代表日志级别
  6. 日志类型分为
  7. 日志级别分为注意从上到下,级别从低到高,记录信息越来越少
  8. 由日志服务 rsyslogd 记录的日志文件,日志文件的格式包含以下4列
    1. 事件产生的时间
    2. 产生事件的服务器的主机名
    3. 产生事件的服务名或程序名
    4. 事件的具体信息
  9. 日志管理服务应用实例:在/etc/rsyslog.conf中添加一个日志文件 /var/log/hsp.log,当有事件发送时(比如sshd服务相关事件),该文件会接收到信息并保存,演示 重启,登录 的情况,看看是否有日志保存

(4)日志轮替

1.4.1基本介绍

日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除

1.4.2日志轮替文件命名

  1. centos7 使用 logrotate 进行日志轮替管理,要想改变日志轮替文件名字,通过 /etc/logrotate.conf 配置文件中 "dateext" 参数
  2. 如果配置文件中有“dateext”参数,那么日志会用 日期 来作为日志文件的后缀,例如“secure-20201010”。这样日志文件名不会重叠,也就不需要日志文件的改名,只需要指定保存日志个数,删除多余的日志文件即可
  3. 如果配置文件中没有 “dateext” 参数,日志文件就需要进行改名了。当第一次进行日志轮替时,当前的 “secure” 日志会自动改名为 “secure.1” ,然后新建 “secure” 日志,用来保存新的日志。当第二次进行日志轮替时,“secure.1” 会自动改名为 “secure.2” ,当前的”secure“日志会自动改名为 “secure.1” ,然后也会新建 “secure” 日志,用来保存新的日志,以此类推
  4. 注意
    1. /etc/logrotate.conf既可以配置全局的日志轮替策略/规则,也可以单独给某个日志文件指定策略
    2. 也可以把某个日志文件的轮替规则,写到 /etc/logrotate.d 目录

1.4.3logrotate配置文件

  1. /etc/logrotate.conf 为 logrotate 的全局配置文件:
  2. 参数说明

1.4.4把自己的日志加入日志轮替

  1. 第一种方法是直接在 /etc/logrotate.conf 配置文件中写入该日志的轮替策略
  2. 第二种方法是在 /etc/logrotate.d/ 目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略,因为该目录中的文件都会被 “include” 到主配置文件中,所以也可以把日志加入轮替
  3. 推荐使用第二种方法,因为系统中需要轮替的日志非常多,如果全都直接写入 /etc/logrotate.conf 配置文件,那么这个文件的可管理性就会非常差,不利于此文件的维护
  4. 在 /etc/logrotate.d/ 配置轮替文件一览

1.4.5应用实例

在 /etc/logrotate.conf 进行配置,或者直接在 /etc/logrotate.d/ 下创建 hsplog 编写如下内容,具体轮替的效果可以参考 /var/log 下的 boot.log 情况

(5)日志轮替机制原理

(6)查看内存日志

  1. 常用指令
    journalctl    #查看系统全部日志
    journalctl -n 3    #查看最新的 3 条日志
    journalctl --since 19:00 --until 19:10:10    #查看 19:00 到 19:10:10 时间段的日志,可加日期限定
    journalctl -p err    #查看报错级别的日志
    journalctl -o verbose    #查看日志详细内容
    journalctl _PID=1245 _COMM=sshd    #查看进程 ID 为 1245 且进程名为 `sshd` 的日志(需详细日志模式)
    journalctl | grep sshd    #从日志里查找包含 `sshd` 的内容
  2. 注意:journalctl 查看得是内存日志,重启会清空

二、定制自己的Linux系统

(1)基本介绍

通过裁剪现有Linux系统(CentOS7.6),创建属于自己的min Linux小系统,可以加深我们对linux的理解

(2)基本原理

  1. BIOS 自检与引导设备选择:计算机开机后,BIOS(基本输入输出系统)首先进行自检,检查硬件设备是否正常工作。若存在多个可启动设备,需在 BIOS 中设置优先启动的设备
  2. MBR 引导:BIOS 找到可启动设备后,读取该设备的主引导记录(MBR),启动其中的 bootloader 引导程序(常见如 GRUB)
  3. 内核加载:bootloader 负责加载 Linux 内核文件(vmlinuz)和初始 RAM 磁盘(initrd)到内存。内核被加载后开始初始化,检测和配置硬件设备
  4. init 进程启动:内核初始化完成后,启动第一个用户空间进程,在现代 Linux 系统中通常是 systemd(它是所有进程的父进程systemd 会根据配置文件启动系统服务和进程
  5. 登录界面显示:系统服务和进程启动完成后,显示登录界面,等待用户输入用户名和密码进行登录

(3)制作mini Linux思路分析

  1. 硬盘分区与格式化:在现有的 CentOS 7.6 系统中添加一块新硬盘 /dev/sdb。对 /dev/sdb 进行分区操作,划分出两个分区,分别用于挂载 /boot 和 / 目录,之后对这两个分区进行格式化处理
  2. 文件拷贝:把现有系统中的所有必要文件复制到 /dev/sdb 的对应分区,使这块硬盘具备完整的 Linux 系统文件结构
  3. 内核与 initramfs 文件复制:为保证新系统能够独立运行,将内核文件和 initramfs 文件复制到 /dev/sdb 上
  4. 验证启动:完成上述操作后,将 /dev/sdb 从当前系统中拔出。创建一个新的 Linux 虚拟机,并将虚拟机的硬盘指向这块 /dev/sdb(在新环境下它会被识别为 /dev/sda),启动虚拟机来验证自制的 Linux 系统是否能正常运行
  5. 示意图

(4)制作步骤

  1. 首先,我们在现有的linux添加一块大小为20G的硬盘(右键虚拟机→设置→硬件→硬盘→添加→硬盘→下一步→SCSI→创建新虚拟磁盘→填写自己需要的磁盘大小,这里我填的20→将虚拟磁盘存储为单个文件→下一步→自己给这个磁盘文件取名→完成)
  2. 添加完成后,点击确定,然后启动现有的linux(centos7.6)。 通过fdisk来给我们的/dev/sdb进行分区
  3. 接下来,我们对/dev/sdb的分区进行格式化
    mkfs.ext4 /dev/sdb1
    mkfs.ext4 /dev/sdb2

  4. 创建目录,并挂载新的磁盘
    mkdir -p /mnt/boot /mnt/sysroot 
    mount /dev/sdb1 /mnt/boot 
    mount /dev/sdb2 /mnt/sysroot/  

  5. 安装grub, 内核文件拷贝至目标磁盘
    grub2-install --root-directory=/mnt /dev/sdb#我们可以来看一下二进制确认我们是否安装成功
    hexdump -C -n 512 /dev/sdb    
    cp -rf /boot/*  /mnt/boot/#如果输入上面的cp命令后,反复提示覆盖,就可以Ctrl+c退出,执行下面这条指令,然后再执行上面的cp
    rm -rf /mnt/boot/*
  6. 修改 grub2/grub.cfg 文件, 标红的部分 是需要使用 指令来查看的
  7. 总结一下上面修改配置文件的步骤:一共有6处需要修改(4+2),还有两处是新增
  8. 创建目标主机根文件系统
    mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,srv,mnt,media,home,root} 

  9. 拷贝需要的bash(也可以拷贝你需要的指令)和库文件给新的系统使用
    cp /lib64/*.* /mnt/sysroot/lib64/
    cp /bin/bash /mnt/sysroot/bin/
  10. 现在我们就可以创建一个新的虚拟机,然后将默认分配的硬盘 移除掉,指向我们刚刚创建的磁盘即可
  11. 这时,很多指令都不能使用,比如 ls , reboot 等,可以将需要的指令拷贝到对应的目录即可
  12. 如果要拷贝指令,重新进入到原来的 linux系统拷贝相应的指令即可,比较将 /bin/ls 拷贝到 /mnt/sysroot/bin  将/sbin/reboot 拷贝到 /mnt/sysroot/sbin
    mount /dev/sdb2 /mnt/sysroot/
    cp /bin/ls /mnt/sysroot/bin/
    cp /bin/systemctl  /mnt/sysroot/bin/
    cp /sbin/reboot /mnt/sysroot/sbin/
  13. 再重新启动新的min linux系统,就可以使用 ls , reboot 指令了

三、备份与恢复

(1)基本介绍

  1. 实体机快照局限与风险:实体机无法做快照,系统异常或数据损坏时,需重做系统,会导致数据丢失
  2. 应对策略:可采用备份和恢复技术应对上述问题
  3. Linux 备份恢复方式:
    1. 用 TAR 打包所需文件或分区,恢复时解压覆盖
    2. 使用 dump 命令备份,restore 命令恢复

(2)安装dump和restore

如果linux上没有dump和restore指令,需要先安装

yum -y install dump
yum -y install restore

 

如果出现上面的问题,解决方案如下:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

(3)使用dump完成备份

3.3.1基本介绍

dump支持分卷和增量备份(所谓增量备份是指备份上次备份后 修改/增加过的文件,也称差异备份)

3.3.2dump语法说明

3.3.3dump应用案例1

将/boot分区所有内容备份到/opt/boot.bak.bz2文件中,备份层级为’0’

dump -0uj -f /opt/boot.bak0.bz2 /boot

3.3.4dump应用案例2

在/boot目录下增加新文件,备份层级为"1"(只备份上次使用层级”0“备份后发生过改变的数据),注意比较看看这次生成的boot1.bak有多大

dump -1uj -f /opt/boot.bak1.bz2 /boot

 

注意:通过dump命令在配合cronbtab可以实现无人值守备份(也就是自动备份) 

3.3.5dump -W

显示出需要进行备份的文件系统,同时还会给出这些文件系统最后一次备份的层级、时间和日期

3.3.6查看备份时间文件

cat /etc/dumpdates

 

3.3.7dump备份文件或目录

前面我们在备份分区时,是可以支持增量备份的,如果备份文件或者目录不再支持增量备份,即只能只用0级别备份

  1. 案例使用dump备份/etc整个目录
    dump -0j -f /opt/etc0.bak.bz2 /etc/
  2. 注意:重要的备份文件,比如数据区,建议将文件上传到其他服务器保存,不要将鸡蛋放在同一个篮子

(4)使用restore完成恢复

3.4.1基本介绍

restore命令用来恢复已备份的文件,可以从dump生成的备份文件中恢复原文件

3.4.2restore基本语法

3.4.3应用案例1

restore命令比较模式,比较备份文件和原文件的区别

mv /boot/hello.java /boot/hello100.java
restore -C -f boot.bak1.bz2

mv /boot/hello100.java /boot/hello.java
restore -C -f boot.bak1.bz2

 

3.4.4应用案例2

restore命令查看模式,看备份文件中有哪些数据/文件

restore -t -f boot.bak1.bz2

3.4.5应用案例3

restore命令还原模式,注意细节:如果你有增量备份,需要把增量备份文件也进行恢复,有几个增量备份文件,就要恢复几个,按顺序来恢复即可

mkdir /opt/boottmp
cd /opt/boottmp
restore -r -f /opt/boot.bak0.bz2 //恢复到第一次完全备份状态
restore -r -f /opt/boot.bak1.bz2 //恢复到第二次增量备份状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21856.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC 请求参数接收

目录 请求 传递单个参数 基本类型参数传递 未传递参数 ?传递参数类型不匹配 传递多个参数 传递对象 后端参数重命名 传递数组 传递集合 传递JSON数据 JSON是什么 JSON的优点 传递JSON对象 获取URL中的参数 文件上传 在浏览器与程序进行交互时,主要…

深度学习之图像回归(一)

前言 图像回归任务主要是理解一个最简单的深度学习相关项目的结构,整体的思路,数据集的处理,模型的训练过程和优化处理。 因为深度学习的项目思路是差不多的,主要的区别是对于数据集的处理阶段,之后模型训练有一些小…

23. AI-大语言模型-DeepSeek简介

文章目录 前言一、DeepSeek是什么1. 简介2. 产品版本1. 类型2. 版本3. 参数规模与模型能力 3. 特征4. 三种访问方式1. 网页端和APP2. DeepSeek API 二、DeepSeek可以做什么1. 应用场景2. 文本生成1. 文本创作2. 摘要与改写3. 结构化生成 3. 自然语言理解与分析1. 语义分析2. 文…

京东cfe滑块 分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 headers {"accept&qu…

什么是事务?并发事务引发的问题?什么是MVCC?

文章目录 什么是事务?并发事务引发的问题?什么是MVCC?1.事务的四大特性2.并发事务下产生的问题:脏读、不可重复读、幻读3.如何应对并发事务引发的问题?4.什么是MVCC?5.可见性规则?参考资料 什么…

火语言RPA--Excel插入空行

【组件功能】:在Excel内指定的位置插入空行 配置预览 配置说明 在第n行之前 支持T或# 填写添加插入第n行之前行号。 插入n行 支持T或# 插入多少行。 Sheet页名称 支持T或# Excel表格工作簿名称。 示例 Excel插入空行 描述 在第3行之后插入3行。 配置 输…

【算法基础】--前缀和

前缀和 一、一维前缀和示例模板[寻找数组的中心下标 ](https://leetcode.cn/problems/tvdfij/description/)除自身以外的数组乘积和可被k整除的子数组 一、一维前缀和 前缀和就是快速求出数组某一个连续区间内所有元素的和。 示例模板 已知一个数组arr,求前缀和 …

buuctf-[极客大挑战 2019]Knife题解

一个很简单的web题,进入界面 网页名还加白给的shell,并且给的提示也很明显,给了一个一句话木马再加上菜刀,很怀疑是一个webshell题,那么直接打开蚁剑测试连接拿shell 用提示的一句话木马的密码,测试链接发现…

基于YOLO11深度学习的半导体芯片缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

零食店收银pos源码

各位零食店老板,你是否还在为以下问题头疼? 连锁门店越来越多,管理起来力不从心?散装称重商品收银效率低,顾客排队抱怨?线上订单激增,库存混乱,配送跟不上?营销活动花样少…

DeepSeek 冲击(含本地化部署实践)

DeepSeek无疑是春节档最火爆的话题,上线不足一月,其全球累计下载量已达4000万,反超ChatGPT成为全球增长最快的AI应用,并且完全开源。那么究竟DeepSeek有什么魔力,能够让大家趋之若鹜,他又将怎样改变世界AI格…

卷积与动态特征选择:重塑YOLOv8的多尺度目标检测能力

文章目录 1. YOLOv8的网络结构概述2. 添加注意力机制2.1 为什么添加注意力机制?2.2 如何将注意力机制集成到YOLOv8中?2.3 效果分析 3. C2f模块的集成3.1 C2f模块简介3.2 如何在YOLOv8中集成C2f模块?3.3 效果分析 4. 卷积操作的优化4.1 卷积操…

鸿蒙-验证码输入框的几种实现方式-上

文章目录 效果图、优缺点多TextInput多 TextCanvas 绘制 多个 TextInput 拼接放置四个输入框焦点移动输入时向后移动输入完成回调删除时向前移动 防止点击总结 最近在做应用鸿蒙化,说白了就是把原来Android、iOS的代码重新用ArkTS写一遍,我负责基础建设和…

谈谈对线程的认识

面对这样的一个多核CPU时代, 实现并发编程是刚需. 多进程实现并发编程, 效果是特别理想的. 但是, 多线程编程模型有一个明显的缺点, 就是进程太重了, 效率不高. 创建一个进程, 消耗时间比较多. 销毁一个进程, 消耗时间也比较多. 调度一个进程, 消耗时间也比较多. 这里的时…

MySQL的数据类型

4. 数据类型 4.1 数据类型分类4.2 数值类型4.2.1 tinyint类型4.2.2 bit类型4.2.3 小数类型4.2.3.1 float4.2.3.2 decimal 4.3 字符串类型4.3.1 char4.3.2 varchar4.3.3 char和varchar比较 4.4 日期和时间类型enum和set 4.1 数据类型分类 4.2 数值类型 4.2.1 tinyint类型 数值越…

回不去的乌托邦

回不去的乌托邦 坐在电脑面前愣神间已至深夜,依然睡意不起。 相比于带着疲惫入睡,伏案发呆更令人惬意。想起最近在自媒体上看到的一句话“最顶级的享受变成了回不去的乌托邦”。 “这是兄弟们最后一次逛校园了,我拍个照”。我的记忆力总是用在…

分布式与集群,二者区别是什么?

??分布式 分布式系统是由多个独立的计算机节点组成的系统,这些节点通过网络协作完成任务。每个节点都有自己的独立计算能力和存储能力,可以独立运行。分布式系统的目标是提高系统的可靠性、可扩展性和性能。 分布式服务包含的技术和理论 负载均衡&am…

<02.21>八股文

JAVA基础 次数少了用解释性 次数多了用编译性(JIT) 操作系统

logging-operator 部署fluentd-bit日志报kubernetes链接错误

一、背景: 某项目使用logging-operator部署fluentd-bit进行日志采集,发现启动的fluentd-bit有大量的的链接kubernetes报错。 二、排查过程 1、排查fluentd容器到kubernetes api server的联通性,进入容器中curl kubernetes.default.svc.local:…

Redis数据结构-String字符串

1.String字符串 字符串类型是Redis中最基础的数据结构,关于数据结构与要特别注意的是:首先Redis中所有的键的类型都是字符串类型,而且其他集中数据结构也都是在字符串类似基础上进行构建,例如列表和集合的元素类型是字符串类型&a…