@


本文以 CentOS7.6 为例。

1:日志管理

日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。

日志对于安全来说也很重要,它记录了系统每天发生的各种事情,能通过日志来检查错误发生的原因,或者检查受到攻击时攻击者留下的痕迹

1.1:系统常用日志

大部分系统日志文件的保存位置: /var/log/ 。

日志文件 说明
/var/log/boot.log 系统启动日志
/var/log/cron 记录与系统定时任务相关信息
/var/log/lastlog 记录所有用户最后一次的登录时间(二进制文件。使用 lastlog 命令查看)
/var/log/maillog 记录邮件信息
/var/log/messages 记录系统重要信息。如果系统出现问题,首先要检查的就是这个日志文件
/var/log/secure 记录验证和授权方面的信息,只要涉及账户和密码都会记录。如系统登录、ssh登录、su切换用户、sudo授权等。
/var/tun/ulmp 记录当前已经登录的用户信息。会随用户登录和注销不断变化,只记录当前登录用户信息。(要用 wwhousers 等命令查看)
/var/log/cpus/ 记录打印信息的日志
/var/log/dmesg 记录系统在开机时内核自检的信息。(可使用 dmesg 命令直接查看内核自检信息)
/var/log/btmp 记录错误登录信息(二进制文件。使用 lastb 命令查看)
/var/log/wtmp 永久记录所有用户的登录、注销信息,也记录系统的启动、重启、关机时间(二进制文件。使用 last 命令查看)

1.2:日志管理

1.2.1:日志服务

rsyslogd 服务作为后台进程,记录日志信息。

rsyslogd 服务记录日志的行为,可在 /etc/rsyslog.conf 文件中设置。

CentOS7.6 日志服务是 rsyslogd 服务,CentOS6.x 日志服务是 syslogd 服务。

rsyslogd 功能更强大。rsyslogd 的使用、日志文件的格式,和 syslogd 服务兼容。

由日志服务 rsyslogd 记录的日志文件,文件格式包含以下 4 列:

  1. 事件产生的时间
  2. 产生事件的服务器的主机名
  3. 产生事件的服务名或程序名
  4. 事件的具体信息

相关指令:

查询 rsyslogd 服务是否启动

ps aux | grep "rsyslog" | grep -v "grep"

查询 rsyslogd 服务的自启动状态

systemctl list-unit-files | grep rsyslog

1.2.2:配置文件

日志服务配置文件为 /etc/rsyslog.conf 。

编辑文件时的格式为:

*.*    存放日志文件

其中第一个 * 代表日志类型,第二个 * 代表日志级别。
日志类型 说明
auth pam 产生的日志
authpriv ssh、ftp 等登录信息的验证信息
corn 时间任务相关
kern 内核
lpr 打印
mail 邮件
mark(syslog)-rsyslog 服务内部的信息,时间标识
news 新闻组
user 用户程序产生的相关信息
uucp unix to nuix copy 主机之间相关的通信
local 1-7 自定义的日志设备
日志级别 说明
debug 有调试信息的,日志通信最多
info 一般信息日志,最常用
notice 最具有重要性的普通条件的信息
warning 警告级别
err 错误级别,阻止某个功能或者模块不能正常工作的信息
crit 严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert 需要立刻修改的信息
emerg 内核崩溃等重要信息
none 什么都不记录

注:从上到下,日志级别从低到高,记录信息从多到少。

1.2.3:自定义日志管理

了解以上原理后,可以自定义一个日志文件,将指定系统信息写入指定文件。

示例,添加 testtt.log 文件以记录所有系统信息。

只需在 /etc/rsyslog.conf 文件中添加以下语句即可:

# 自定义日志文件
*.* /var/log/testtt.log

1.3:日志轮替

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

1.3.1:轮替服务

为了进行日志轮替管理,使用 logrotate 服务

日志轮替可以在指定的时间备份日志,依赖于系统定时任务

在 /etc/cron.daily/ 目录,存在 logrotate 可执行文件。logrotate 服务就依赖这个文件。

可在 /etc/logrotate.conf 文件中配置轮替规则。

1.3.2:配置文件

/etc/logrotate.conf 为 logrotate 的全局配置文件。

除此以外,如果全局配置文件中存在以下语句

include /etc/logrotate.d

则也包含 /etc/logrotate.d/ 目录中所有的子配置文件。
子配置文件优先级更高。
为了便于管理也在此目录中为指定日志文件配置轮替规则。

参数说明:

参数 说明
daily 日志的轮替周期是每天
weekly 日志的轮替周期是每周
monthly 日志的轮替周期是每月
rotate 数字 保留的日志文件的个数。0 指没有备份
compress 日志轮替时,旧的日志进行压缩
create mode owner group 建立新日志,同时指定新日志的权限与所有者和所属组。
mail address 当日志轮替时,输出内容通过邮件发送到指定的邮件地址。
missingok 如果日志不存在,则忽略该日志的警告信息
notifempty 如果日志为空文件,则不进行日志轮替
minsize 大小 日志轮替的最小值。日志达到这个最小值才会轮替,否则就算时间达到也不轮替
size 大小 日志只有大于指定大小才进行日志轮替,而不是按照时间轮替。
dateext 使用日期作为日志轮替文件的后缀。
sharedscripts 在此关键字之后的脚本只执行一次。
prerotate/endscript 在日志轮替之前执行脚本命令。
postrotate/endscript 在日志轮替之后执行脚本命令。

1.3.3:自定义日志轮替

把日志加入日志轮替,有两种方法。

  • 第一种方法是直接在 /etc/logrotate.conf 配置文件中写入该日志的轮替策略。
  • 第二种方法是在 /etc/logrotate.d/ 目录中新建立该日志的轮替文件,在该轮替文件中写入轮替策略

因为 /etc/logrotate.d/ 目录中的文件都会被 “ include ” 到主配置文件中,所以能实现日志轮替。

推荐使用第二种方法,因为系统中需要轮替的日志非常多,如果全都写入主配置文件,不利于主配置文件的维护。

1.2.3:自定义日志管理 中 testtt.log 文件为例:

在 /etc/logrotate.d/ 下创建文件 testttlog 并编写如下内容即可:

/var/log/testtt.log
{
missingok
daily
copytruncate
rotate 7
notifempty
}

1.4:内存日志

Linux 中,有一部分日志写在内存里,还未写到文件中。叫做内存日志

由定义知,内存日志关机会清空。

使用 journalctl 可以查看内存日志,这里只列出几个常用指令。

查看最新3条日志

journalctl -n 3

查看指定时间段的日志

journalctl --since 19:00 --until 19:10

查看报错日志

journalctl -p err

查看日志详细内容

journalctl -o verbose

2:备份与恢复

实体机无法做快照,如果系统出现异常或者数据损坏,后果严重。

Linux 的备份和恢复有两种方式:

  • 把需要的文件(或者分区)用 tar 打包备份,需要恢复的时候,再解压开覆盖即可。
  • 使用 dump 和 restore 命令。

如果是重要的备份文件, 比如数据备份,建议将备份文件上传到其它服务器保存。

2.1:dump

功能描述:用于备份文件系统。支持增量备份(也称差异备份,指备份 上次备份后 修改/增加过的文件)。

备份分区时,可以支持增量备份。如果备份文件或者目录,不支持增量备份。

可将备份记录存储到 /etc/dumpdates 文件。

基本语法

dump [选项] [-f] 备份文件 name

“ -f ” 指定备份文件,可不加。

“ 备份文件 ” 为指定备份后的保存。

“ name ” 为要备份的文件或目录。

常用选项

参数 说明
-数字 指定备份层级,范围 0 ~ 9。0 为最完整备份,会备份所有文件。(文件或目录只能使用 0 级别)
-j 调用 bzlib 库压缩备份文件,也就是将备份后的文件压缩成 bz2 格式。
-u 备份完毕之后将相应的信息存储到 /etc/dumpdates 文件留作记录。

示例:

# 显示备份的文件及其最后一次备份的时间、层级
dump -W # 将 /boot/ 分区所有内容备份到 /opt/boot.bak0.bz2 文件,备份层级为 “ 0 ”
dump -0uj -f /opt/boot.bak0.bz2 /boot # 将 /boot/ 分区备份到 /opt/boot.bak1.bz2 文件,备份层级为 “ 1 ”
dump -1uj -f /opt/boot.bak1.bz2 /boot # 备份整个 /etc/ 目录到 /opt/etc.bak.bz2 文件
dump -0j -f /opt/etc.bak.bz2 /etc # 查看备份时间文件
cat /etc/dumpdates

2.2:restore

功能描述:用来还原由 dump 操作所备份下来的文件或整个文件系统(一个分区)。

基本语法

restore [模式] -f 备份文件

常用模式

参数 说明
-C 对比模式。将备份文件与相应的现有文件或目录进行对比。
-t 查看模式。看备份文件有哪些文件。
-r 还原模式。恢复到备份时状态。
-i 交互模式。在进行还原操作时,将依次询问用户。

2.1:dump 中示例为例:

# 比较备份文件和原文件的区别
restore -C -f boot.bak1.bz2 # 查看备份文件有哪些数据/文件
restore -t -f boot.bak0.bz2 # 将 /boot/ 恢复到第 1 次完全备份状态
restore -r -f /opt/boot.bak0.bz2

非鬼亦非仙,一曲桃花水。

——《生查子 · 独游雨岩》(宋)辛弃疾

《Linux基础》08. 日志管理 · 备份与恢复的更多相关文章

  1. Linux学习之日志管理(二十一)

    Linux学习之日志管理 目录 日志管理 日志服务 rsyslogd的新特点 启动日志服务 常见日志的作用 日志文件的一般格式 rsyslogd日志服务 /etc/rsyslog.conf配置文件 服 ...

  2. linux 学习 14 日志管理

    第十四讲 日志管理 14.1 日志管理-简介 .日志服务 在CentOS .x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服 ...

  3. Linux进阶之日志管理

    一.何为日志 1.在程序执行时,可以通过标准输出以及错误输出,让我们知道程序的执行情况,而系统不可能将所有程序的输出信息一起显示,要知道后台执行的程序非常之多,如果一起显示,那我们不用操作了,整天只看 ...

  4. linux服务器的日志管理

    消息紧急程度排行 emerg:该系统不可用 alert:需要立即修改 crit:紧急情况 err:错误信息 warning:预警信息 notice:具有重要性的普通条件 info:提供信息的消息 de ...

  5. linux基础之磁盘管理与文件系统

    上面一篇文章(https://www.cnblogs.com/ckh2014/p/7224851.html)介绍了硬盘的基本结构,那么一块磁盘如何应用取存储数据呢? 它的步骤是这样的: 识别硬盘 -- ...

  6. Linux基础四(服务管理)

    目录 一.简介与分类 1.系统的默认运行级别 2.服务的分类 3.服务与端口 二.服务管理 1.RPM包服务管理 2.源码包服务管理 三.服务管理总结 一.简介与分类 1. 系统的运行级别 1.1 默 ...

  7. linux基础之权限管理

    本节内容 1. 权限类别 属主(owner) 属组(group) 其他人(other) 2. 查看权限 ls -l 十位: 第一位文件类型-,d,l, 3. 设置权限 chmod 选项 权限模式 fi ...

  8. mysql基础之日志管理(查询日志、慢查询日志、错误日志、二进制日志、中继日志、事务日志)

    日志文件记录了MySQL数据库的各种类型的活动,MySQL数据库中常见的日志文件有 查询日志,慢查询日志,错误日志,二进制日志,中继日志 ,事务日志. 修改配置或者想要使配置永久生效需将内容写入配置文 ...

  9. Linux系统的日志管理、时间同步、延迟命令at

    方便查看和管理 /var/log/messages ?系统服务及日志,包括服务的信息,报错等等 /var/log/secure ? ? ? ? 系统认证信息日志 /var/log/maillog ? ...

  10. Linux基础命令---exportfs管理挂载的nfs文件系统

    exportfs exportfs主要用于管理当前NFS服务器的文件系统. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora. 1.语法        /usr/sb ...

随机推荐

  1. simplejwt配置大全

    # simplejwt配置大全SIMPLE_JWT = { 'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5), # 设置token有效时间 'REFRESH_ ...

  2. 下载与安装Node.js

    下载与安装Node.js 1.下载安装包 Node.js 官方网站下载:https://nodejs.org/en/ 2.安装 这边安装就直接next 安装好后它会自动配置好环境变量 这是我们来到命令 ...

  3. MySQL的sql语句执行流程(简述)

    导言: MySQL和服务器端对接的时候,我们知道一般就是服务器端会打包一些SQL命令去增删改查数据库,这个打包的数据库SQL语句数据包一般为4MB,再大一些就不会被数据库端接收了 但是我们可以自己更改 ...

  4. 源码解析:django的CSRF认证

    详解Django的CSRF认证 1.csrf原理 csrf要求发送post,put或delete请求的时候,是先以get方式发送请求,服务端响应时会分配一个随机字符串给客户端,客户端第二次发送post ...

  5. 【Leetcode】 #9 回文数

    判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 - ...

  6. JAVA SE基础《一》----JAVA入门

    初识Java 1.Java背景知识 java是美国sun公司(Stanford University Network)在1995年推出的一门计算机高级编程语言. Java早期称为Oak(橡树),后期改 ...

  7. 自然语言处理 Paddle NLP - 基于预训练模型完成实体关系抽取

    自然语言处理 Paddle NLP - 信息抽取技术及应用 重点:SOP 图.BCEWithLogitsLoss 基于预训练模型完成实体关系抽取 信息抽取旨在从非结构化自然语言文本中提取结构化知识,如 ...

  8. 前端vue仿京东天猫简单好用的瀑布流瀑布流式布局列表组件waterfall

    前端vue仿京东天猫简单好用的瀑布流瀑布流式布局列表组件waterfall, 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id=130 ...

  9. 1. SpringMVC 简介

    1. 什么是 MVC ‍ MVC是一种软件架构的思想,将软件按照模型.视图.控制器来划分 M:Model,模型层,指工程中的JavaBean,作用是处理数据 ‍ JavaBean分为两类: 一类称为实 ...

  10. SAP ABAP 动态结构实现发送企业微信应用消息

    企业微信官方接口: 应用支持推送文本.图片.视频.文件.图文等类型. 请求方式:POST(HTTPS)请求地址: https://qyapi.weixin.qq.com/cgi-bin/message ...