@


本文以 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. ubuntu配置vscode全过程(下载安装配置优化插件)

    一.安装vscode 下载vscode 当然啦,我们安装vscode,当然要先下载啦,但是但是但是!不要在ubuntu的软件中心(Ubuntu Software)下载!贼坑!下载完不能用! 推荐下载方 ...

  2. 详解JS的Object.create()

    Object.create()方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__. 语法 Object.create(proto[, propertiesObject]) Obj ...

  3. 代码随想录算法训练营Day28 回溯算法 | 491.递增子序列 46.全排列 47.全排列 II

    代码随想录算法训练营 491.递增子序列 题目链接:491.递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2. 示例: 输入: [4, 6, 7, 7] ...

  4. 如何使用 Megatron-LM 训练语言模型

    在 PyTorch 中训练大语言模型不仅仅是写一个训练循环这么简单.我们通常需要将模型分布在多个设备上,并使用许多优化技术以实现稳定高效的训练.Hugging Face  Accelerate 的创建 ...

  5. 在DevExpress的GridView的列中,使用RepositoryItemSearchLookUpEdit控件实现产品列表信息的展示和选择

    有时候,我们为了方便,我们往往使用扩展函数的代码方式创建很多GridView的操作功能,如在随笔<在DevExpress中使用BandedGridView表格实现多行表头的处理>中介绍过多 ...

  6. clickhouse使用入门

    转载请注明出处(- ̄▽ ̄)-严禁用于商业目的的转载- 导语:同学,你也不想你根本不懂ClickHouse,却赶鸭子上架使用的事情被其他人知道吧? 写在前面:本文旨在让原先有一定SQL基础的人快速简单了 ...

  7. LaTeX 的学习笔记

    摘自我的洛谷博客 该文章被打开的次数(包括洛谷平台): \(\LaTeX\) 中所有命令都以\开头,后面可以跟一个花括号,代表参数. \documentclass{} 指定了文章类型,有 articl ...

  8. P3755 [CQOI2017]老C的任务题解

    如果询问 \(x_1, y_1, x_2, y_2\), 那么询问 \((x_2, y_2)\), \((x_2, y_1 - 1)\), \((x_1 - 1, y_2)\) \((x_1 - 1, ...

  9. SSE图像算法优化系列三十一:RGB2HSL/RGB2HSV及HSL2RGB/HSV2RGB的指令集优化-上。

    RGB和HSL/HSV颜色空间的相互转换在我们的图像处理中是有着非常广泛的应用的,无论是是图像调节,还是做一些肤色算法,HSL/HSV颜色空间都非常有用,他提供了RGB颜色空间不具有的一些独特的特性, ...

  10. sshpiper 在 Kubernetes 上的应用

    sshpiper 在 Kubernetes 上的应用 介绍 GitHub Repo 一个反向代理目标服务器的 proxy,客户端想请求某个 ssh 服务器,直接请求的是 sshpiper 服务,再经由 ...