@


本文以 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. vb.net 数据库连接字符串

    '设置数据库连接字符串 Dim connString As String = "Data Source=.\SQLEXPRESS;Initial Catalog=YourDatabaseNa ...

  2. Express实战个人订阅号实现网站登录

    今天我们来实现一个使用个人订阅号实现网站的功能,后端使用的是 express .其它框架原理基本一致,只是定义路由或返回响应数据部分代码跟 express 有所出入.先来一波效果图: 1. 前言 20 ...

  3. 补充:C语言枚举类型

    1.枚举类型 1.枚举数据类型是C语言中一种构造数据类型,可以让数据更加简洁,更易读,对于只有几个特定的数据,可以使用枚举类型 2.枚举对应英文enumeration,简写为enum 3.枚举是一组常 ...

  4. kafka生产者你不得不知的那些事儿

    前言 kafka生产者作为消息发送中很重要的一环,这里面可是大有文章,你知道生产者消息发送的流程吗?知道消息是如何发往哪个分区的吗?如何保证生产者消息的可靠性吗?如何保证消息发送的顺序吗?如果对于这些 ...

  5. MAC 打开.bash_profile

    1.开启终端(terminal)[左下角启动台(图标)> 其他] 2.进入当前用户目录 $ cd ~ 3.打开profile文件 $ open -e .bash_profile 就会弹出.bas ...

  6. Android SmartTable表格框架1_如何使用

    SmartTable github地址:https://github.com/huangyanbin/smartTable 参考:https://juejin.cn/post/684490354910 ...

  7. Git及可视化工具TortoiseGit的安装及使用

    前言: TortoiseGit(中文称git小乌龟),是一款开源的git可视化gui工具,让你可以用图形化的界面来使用git,如此即使不会git命令也能流畅的使用git(我就是不想学git命令才使用的 ...

  8. 数据科学工具 Jupyter Notebook 教程(二)

    Jupyter Notebook 是一个把代码.图像.注释.公式和作图集于一处,实现可读性分析的交互式笔记本工具.借助所谓的内核(Kernel)的概念,Jupyter Notebook 可以同时支持包 ...

  9. Pytorch-PyG图神经网络依赖环境安装(Anaconda)

    1.默认用户在Anaconda的虚拟环境中已安装Pytorch 2.打开anaconda prompt命令窗, activate "你的虚拟环境名称" 3.在激活后的虚拟环境下输入 ...

  10. C++面试八股文:什么是左值,什么是右值?

    某日二师兄参加XXX科技公司的C++工程师开发岗位第16面: 面试官:什么是左值,什么是右值? 二师兄:简单来说,左值就是可以使用&符号取地址的值,而右值一般不可以使用&符号取地址. ...