Linux笔记:10-认识与分析日志文档

@

认识与分析日志文档

什么是登录档

就是记录系统活动信息的几个文件, 例如:何时、何地 (来源 IP)、何人(什么服务名称)、做了什么动作 (操作日志)。 换句话说就是:记录系统在什么时候由哪个程序做了什么样的行为时,发生了何种的事件等等。

CentOS 7 登录档简易说明

我们的 Linux 主机在背景之下有相当多的 daemons 同时在工作着,这些工作中的程序总是会显示一些讯息, 这些显示的讯息最终会被记载到日志文件当中啦。也就是说,记录这些系统的重要讯息就是日志文件的工作。

日志文档的重要性

  • 解决系统方面的错误:

    用 Linux 这么久了,你应该偶而会发现系统可能会出现一些错误,包括硬件捉不到或者是某些系统服务无法顺利运作的情况。 由于系统会将硬件侦测过程记录在登录文件内,你只要透过查询日志文件就能够了解系统作了啥事。

  • 解决网络服务的问题:

    由于网络服务的各种问题通常都会被写入特别的日志文档, 其实你只要查询日志文档就会知道出了什么差错 ;举例来说,如果你无法启动邮件服务器 (postfix), 那么查询一下 /var/log/maillog 通常可以得到不错的解答。

  • 往事件记录簿:

    例如:你发现 WWW 服务 (httpd 软件) 在某个时刻流量特别大,你想要了解为什么时, 可以透过登录档去找出该时段是哪些 IP 在联机与查询的网页数据为何,就能够知道原因。 此外,万一哪天你的系统被入侵,并且被利用来攻击他人的主机,由于被攻击主机会记录攻击者,因此你的 IP 就会被对方记录。这个时候你要如何告知对方你的主机是由于被入侵所导致的问题, 并且协助对方继续往恶意来源追查。

Linux 常见的日志文档名

登录文件可以帮助我们了解很多系统重要的事件,包括登入者的部分信息,因此日志文件的权限通常是设定为仅有 root 能够读取而已

常见的日志文档名,如下:

  • /var/log/boot.log:

    开机的时候系统核心会去侦测与启动硬件,接下来开始各种核心支持的功能启动等。这些流程都会记录在/var/log/boot.log 里面;不过这个文件只会存在这次开机启动的信息,前次开机的信息并不会被保留下来。

  • /var/log/cron:

    crontab 定时任务的日志文档;

  • /var/log/dmesg:

    记录系统在开机的时候核心侦测过程所产生的各项信息。由于 CentOS 默认将开机时核心的硬件侦测过程取消显示, 因此额外将数据记录一份在这个文件中;

  • /var/log/lastlog:

    可以记录系统上面所有的账号最近一次登入系统时的相关信息。lastlog 指令就是利用这个文件的记录信息来显示的。

  • /var/log/maillog 或 /var/log/mail/*:

    记录邮件的往来信息,其实主要是记录 postfix (SMTP 协议提供者) 与 dovecot (POP3 协议提供者) 所产生的讯息啦。 SMTP 是发信所使用的通讯协议, POP3 则是收信使用的通讯协议。 postfix 与 dovecot 则分别是两套达成通讯协议的软件。

  • /var/log/messages:

    这个文件相当的重要,几乎系统发生的错误讯息 (或者是重要的信息) 都会记录在这个文件中; 如果系统发生莫名的错误时,这个文件是一定要查阅的登录档之一。

  • /var/log/secure:

    基本上,只要牵涉到『需要输入账号密码』的软件,那么当登入时 (不管登入正确或错误) 都会被记录在此文件中。 包括系统的 login 程序、图形接口登入所使用的 gdm 程序、 su, sudo 等程序、还有网络联机的ssh, telnet 等程序, 登入信息都会被记载在这里;

  • /var/log/wtmp, /var/log/faillog:

    这两个文件可以记录正确登入系统者的帐户信息 (wtmp) 与错误登入时所使用的帐户信息 (faillog) ;last 就是读取 wtmp 来显示的, 这对于追踪一般账号者的使用行为很有帮助 。

  • /var/log/httpd/, /var/log/samba/

    不同的网络服务会使用它们自己的登录文件来记载它们自己产生的各项讯息!上述的目录内则是个别服务所制订的登录档。

常见的登录档就是这几个,但是不同的 Linux distributions ,通常日志文档的档名不会相同 (除了/var/log/messages 之外 )。所以说,你还是得要查阅你 Linux 主机上面的日志文件设定数据, 才能知道你的日志文档主要档名。

日志文档所需相关服务 (daemon) 与程序

日志文档产生基本有两种方式:

一种是由软件开发商自行定义写入的日志文档与相关格式, 例如 WWW 软件 apache 就是这样处理的。

另一种则是由 Linux distribution 提供的登录档管理服务来统一管理。 你只要将讯息丢给这个服务后,他就会自己分门别类的将各种讯息放置到相关的日志文档去

CentOS 提供 rsyslog.service 这个服务来统一管理日志文档

不过要注意的是,如果你任凭登录文件持续记录的话,由于系统产生的信息天天都有,那么你的登录文件的容量将会长大到无法无天~ 如果你的登录文件容量太大时,可能会导致大文件读写效率不佳的问题 (因为要从磁盘读入内存,越大的文件消耗内存量越多)。 所以,你需要对登录档备份与更新。我们可以透过 logrotate (登录档轮替) 来自动化处理登录文件容量与更新的问题。

所谓的 logrotate 基本上,就是将旧的登录档更改名称,然后建立一个空的登录档,如此一来, 新的登录文件将重新开始记录,然后只要将旧的登录档留下一阵子

总结一下,针对登录文件所需的功能,我们需要的服务与程序有:

  • systemd-journald.service:最主要的讯息收受者,由 systemd 提供的;
  • rsyslog.service:主要记录系统与网络等服务的讯息;
  • logrotate:主要在进行日志文件的轮替功能。

由于我们着眼点在于想要了解系统上面软件所产生的各项信息,因此本章主要针对 rsyslog.service 与logrotate 来介绍。

CentOS 7.x 使用 systemd 提供的 journalctl 日志管理

CentOS 7 除了保有既有的 rsyslog.service 之外其实最上游还使用了 systemd 自己的登录文件日志管理功能 ;
他使用的是 systemd-journald.service 这个服务来支持的。基本上,系统由 systemd 所管理,那所有经由 systemd 启动的服务,如果再启动或结束的过程中发生一些问题或者是正常的讯息, 就会将该讯息由 systemd-journald.service 以二进制的方式记录下来,之后再将这个讯息发送给rsyslog.service 作进一步的记载。

systemd-journald.service 的记录主要都放置于内存中,因此在存取方面效能比较好我们也能够透过journalctl 以及 systemctl status unit.service 来查看各个不同服务的日志文档

这有个好处,就是登录档可以随着个别服务让你查阅,在单一服务的处理上面,要比跑到 /var/log/messages 去大海捞针来的简易很多;

不过,因为 system-journald.service 里面的很多观念还是沿用 rsyslog.service 相关的信息,所以,本章还是先从 rsyslog.service 先谈起, 谈完之后再以 journalctl 进一步了解 systemd 是怎么去记录登录文件日志功能的。

日志文档内容的一般格式

一般来说,系统产生的讯息经过记录下来的数据中,每条讯息均会记录底下的几个重要数据:

  • 事件发生的日期与时间;
  • 发生此事件的主机名;
  • 启动此事件的服务名称 (如 systemd, CROND 等) 或指令与函式名称 (如 su, login..);
  • 该讯息的实际数据内容。

当然,这些信息的『详细度』是可以修改的,而且,这些信息可以作为系统除错之用;

使用登录时一定会记载帐户信息的 /var/log/secure 为例:

[root@study ~]# cat /var/log/secure
Aug 17 18:38:06 study login: pam_unix(login:session): session opened for user root by LOGIN(uid=0)
Aug 17 18:38:06 study login: ROOT LOGIN ON tty1
Aug 17 18:38:19 study login: pam_unix(login:session): session closed for user root
Aug 18 23:45:17 study sshd[18913]: Accepted password for dmtsai from 192.168.1.200 port 41524 ssh2
Aug 18 23:45:17 study sshd[18913]: pam_unix(sshd:session): session opened for user dmtsai by (uid=0)
Aug 18 23:50:25 study sudo: dmtsai : TTY=pts/0 ; PWD=/home/dmtsai ; USER=root ; COMMAND=/bin/su -
Aug 18 23:50:25 study su: pam_unix(su-l:session): session opened for user root by dmtsai(uid=0)
|--日期/时间---|--H--|-服务与相关函数-|-----------讯息说明------>

我们拿第一笔数据 (共两行) 来说明好了,该资料是说:『在 08/17 的 18:38 左右,在名为 study 的这部主机系统上,由 login 这个程序产生的讯息,内容显示 root 在 tty1 登入了,而相关的权限给予是透过 pam_unix 模块处理的 (共两行数据)。』

注意第二个字段为『主机名』;这是因为日志文档可以做成日志文档服务器,可以收集来自其他服务器的日志文档数据;所以,为了了解到该讯息主要是来自于哪一部主机, 当然得要有第二个字段项目说明该信息来自哪一部主机名。

rsyslog.service :记录登录文件的服务

Linux 的日志主要是由 rsyslog.service 在负责;

[root@study ~]# ps aux | grep rsyslog
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 750 0.0 0.1 208012 4732 ? Ssl Aug17 0:00 /usr/sbin/rsyslogd -n
# 瞧!确实有启动的!daemon 执行档名为 rsyslogd 喔!

[root@study ~]# systemctl status rsyslog.service
rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled)
Active: active (running) since Mon 2015-08-17 18:37:58 CST; 2 days ago
Main PID: 750 (rsyslogd)
CGroup: /system.slice/rsyslog.service
└─750 /usr/sbin/rsyslogd -n
# 也有启动这个服务,也有预设开机时也要启动这个服务!OK!正常没问题!!

rsyslog.service 的配置文件:/etc/rsyslog.conf

配置文件是rsyslogd 这个 daemon 的配置文件

rsyslogd 可以负责主机产生的各个信息的登录,而这些信息本身是有『严重等级』之分的, 而且,这些资料最终要传送到哪个文件去是可以修改的,所以我们才会在一开头的地方讲说,每个 Linuxdistributions 放置的登录档档名可能会有所差异

基本上, rsyslogd 针对各种服务与讯息记录在某些文件的配置文件就是 /etc/rsyslog.conf, 这个文件规定了『(1)什么服务 (2)的什么等级讯息 (3)需要被记录在哪里(装置或文件)』 这三个设置选项,所以设定的语法会是这样:

服务名称[.=!]讯息等级 	讯息记录的文件名或装置或主机
# 底下以 mail 这个服务产生的 info 等级为例:
mail.info 		/var/log/maillog_info
# 这一行说明:mail 服务产生的大于等于 info 等级的讯息,都记录到
# /var/log/maillog_info 文件中的意思。

服务名称

rsyslogd 主要还是透过 Linux 核心提供的 syslog 相关规范来设定数据的分类的,Linux 的 syslog本身有规范一些服务讯息, 你可以透过这些服务来储存系统的讯息。Linux 核心的 syslog 认识的服务类型主要有底下这些: (可使用 man 3 syslog 查询到相关的信息,或查询 syslog.h 这个文件来了解的!)

相对序号 服务类别 说明
0 kern(kernel) 就是核心 (kernel) 产生的讯息,大部分都是硬件侦测以及核心功能的启用
1 user 在用户层级所产生的信息,例如后续会介绍到的用户使用 logger 指令来记录登录文件 的功能
2 mail 只要与邮件收发有关的讯息记录都属于这个;
3 daemon 主要是系统的服务所产生的信息,例如 systemd 就是这个有关的讯息!
4 auth 主要与认证/授权有关的机制,例如 login, ssh, su 等需要账号/密码的咚咚;
5 syslog 就是由 syslog 相关协议产生的信息,其实就是 rsyslogd 这支程序本身产生的信息啊!
6 lpr 亦即是打印相关的讯息啊!
7 news 与新闻组服务器有关的东西;
8 uucp 全名为 Unix to Unix Copy Protocol,早期用于 unix 系统间的程序数据交换;
9 cron 就是例行性工作排程 cron/at 等产生讯息记录的地方;
10 authpriv 与 auth 类似,但记录较多账号私人的信息,包括 pam 模块的运作等!
11 ftp 与 FTP 通讯协议有关的讯息输出!
16-23 local0 ~ local7 保留给本机用户使用的一些登录文件讯息,较常与终端机互动。

上面谈到的都是 Linux 核心的 syslog 函数自行制订的服务名称,软件开发商可以透过呼叫上述的服务名称来记录他们的软件。

举例来说, sendmail 与 postfix 及 dovecot 都是与邮件有关的软件,这些软件在设计日志文件记录时,都会主动呼叫 syslog 内的 mail 服务名称 (LOG_MAIL)。所以上述三个软件 (sendmail, postfix, dovecot) 产生的讯息在 syslog 看起来,就会『是 mail 』类型的服务了。
我们可以将这个概念绘制如底下的图示来理解:

另外,每种服务所产生的数据量其实差异是很大的,举例来说, mail 的登录文件讯息多的要命, 每一封信件进入后, mail 至少需要记录『寄信人的信息;与收信者的讯息』等等; 而如果是用来做为工作站主机的,那么登入者 (利用 login 登录主机处理事情) 的数量一定不少,那个 authpriv 所管辖的内容可就多的要命了。

为了让不同的信息放置到不同的文件当中,好让我们分门别类的进行登录档的管理, 所以,将各种类别的服务的日志文件,记录在不同的文件里面,就是我们 /etc/rsyslog.conf 所要作的规范。

讯息等级

同一个服务所产生的讯息也是有差别的,有启动时仅通知系统而已的一般讯息 (information), 有出现还不至于影响到正常运作的警告讯息 (warn) ,还有系统硬件发生严重错误时,所产生的重大问题讯息 (error 等等);

基本上,Linux 核心的 syslog 将讯息分为七个主要的等级,根据 syslog.h 的定义,讯息名称与数值的对应如下:

等级数值 等级名称 说明
7 debug 用来 debug (除错) 时产生的讯息数据;
6 info 仅是一些基本的讯息说明而已;
5 notice 虽然是正常信息,但比 info 还需要被注意到的一些信息内容;
4 warning (warn) 警示的讯息,可能有问题,但是还不至于影响到某个 daemon 运作的信息;基本上,info, notice, warn 这三个讯息都是在告知一些基本信息而已,应该还不至于造成一些系统运作 困扰;
3 err (error) 一些重大的错误讯息,例如配置文件的某些设定值造成该服务服法启动的信息说明, 通 常藉由 err 的错误告知,应该可以了解到该服务无法启动的问题呢!
2 crit 比 error 还要严重的错误信息,这个 crit 是临界点 (critical) 的缩写,这个错误已经很 严重了喔!
1 alert 警告警告,已经很有问题的等级,比 crit 还要严重!
0 emerg (panic) 疼痛等级,意指系统已经几乎要当机的状态! 很严重的错误信息了。通常大概只有硬件 出问题,导致整个核心无法顺利运作,就会出现这样的等级的讯息吧!

基本上,在 0(emerg) 到 6(info) 的等级之间,等级数值越高代表越没事,等级靠近 0 则代表事情大条了!除了 0 到 6 之外还有两个比较特殊的等级, 那就是 debug(错误侦测等级) 与 none (不需登录等级) 两个,当我们想要作一些错误侦测,或者是忽略掉某些服务的信息时, 就用这两个等级。

特别留意一下在讯息等级之前还有 [.=!] 的链接符号,他代表的意思是这样的:

  • . :代表『比后面还要严重的等级 (含该等级) 都被记录下来』的意思,例如: mail.info 代表只要是 mail
    的信息,而且该信息等级严重于 info (含 info 本身)时,就会被记录下来的意思。
  • .=:代表所需要的等级就是后面接的等级而已, 其他的不要;
  • .!:代表不等于, 亦即是除了该等级外的其他等级都记录。

一般来说,我们比较常使用的是『.』这个链接符号

讯息记录的文件名或装置或主机

通常我们使用的都是记录的文件,但是也可以输出到装置; 例如打印机之类的,也可以记录到不同的主机上头。底下就是一些常见的放置处:

  • 文件的绝对路径:通常就是放在 /var/log 里头的文件。
  • 打印机或其他:例如 /dev/lp0 这个打印机装置 。
  • 使用者名称:显示给用户。
  • 远程主机:例如 @study.vbird.tsai 当然啦,要对方主机也能支持才行。
  • *:代表『目前在在线的所有人』,类似 wall 这个指令的意义。

服务、daemon 与函数名称

对syslog, rsyslogd, rsyslog.service 的总结

名词 作用
syslog 这个是 Linux 核心所提供的日志文档设计指引,所有的要求大概都写入道一个名为 syslog.h 的头文件案中。如果你想要开发与登录文件有关的软件, 那你就得要依循这个 syslog 函数的要求去设 计才行!可以使用 man 3 syslog 去查询一下相关的数据
rsyslogd 为了要达成实际上进行讯息的分类所开发的一套软件,所以,这就是最基本的 daemon 程序!
rsyslog.service 为了加入 systemd 的控制,因此 rsyslogd 的开发者设计的启动服务脚本设定!

CentOS 7.x 预设的 rsyslog.conf 内容

/etc/rsyslog.conf 这个文件的预设内容:

# 来自 CentOS 7.x 的相关资料
[root@study ~]# vim /etc/rsyslog.conf
1 #kern.* /dev/console
2 *.info;mail.none;authpriv.none;cron.none /var/log/messages
3 authpriv.* /var/log/secure
4 mail.* -/var/log/maillog
5 cron.* /var/log/cron
6 *.emerg :omusrmsg:*
7 uucp,news.crit /var/log/spooler
8 local7.* /var/log/boot.log

上面总共仅有 8 行设定值,每一行的意义是这样的:

  • #kern.*:只要是核心产生的讯息,全部都送到 console(终端机) 去。console 通常是由外部装置连接到系统而来, 举例来说,很多封闭型主机 (没有键盘、屏幕的系统) 可以透过连接 RS232 连接口将讯息传输到外部的系统中, 例如以笔记本电脑连接到封闭主机的 RS232 插口。这个项目通常应该是用在系统出现严重问题而无法使用默认的屏幕观察系统时, 可以透过这个项目来连接取得核心的讯息。
  • *.info;mail.none;authpriv.none;cron.none:由于 mail, authpriv, cron 等类别产生的讯息较多, 且已经写入底
    下的数个文件中,因此在 /var/log/messages 里面就不记录这些项目。除此之外的其他讯息都写入
    /var/log/messages 中。这也是为啥我们说这个 messages 文件很重要的缘故!
  • authpriv.*:认证方面的讯息均写入 /var/log/secure 文件;
  • mail.*:邮件方面的讯息则均写入 /var/log/maillog 文件;
  • cron.*:例行性工作排程均写入 /var/log/cron 文件;
  • *.emerg:当产生最严重的错误等级时,将该等级的讯息以 wall 的方式广播给所有在系统登入的账号得知,
    要这么做的原因是希望在线的用户能够赶紧通知系统管理员来处理这么可怕的错误问题。
  • uucp,news.crit:uucp 是早期 Unix-like 系统进行数据传递的通讯协议,后来常用在新闻组的用途中。 news
    则是新闻组。当新闻组方面的信息有严重错误时就写入 /var/log/spooler 文件中;
  • local7.*:将本机开机时应该显示到屏幕的讯息写入到 /var/log/boot.log 文件中;

在上面的第四行关于 mail 的记录中,在记录的文件 /var/log/maillog 前面还有个减号『 - 』 ;

由于邮件所产生的讯息比较多,因此我们希望邮件产生的讯息先储存在速度较快的内存中(buffer) ,等到数据量够大了才一次性的将所有数据都填入磁盘内,这样将有助于登录文件的存取性能。 只不过由于讯息是暂存在内存内,因此若不正常关机导致登录信息未回填到登录档中,可能会造成部分数据的遗失。

每个 Linux distributions 的 rsyslog.conf 设定差异是颇大的,如果你想要找到相对应的日志信息时, 可得要查阅一下 /etc/rsyslog.conf 这个文件才行!否则可能会发生分析到错误的信息。

自行增加登录文件文件功能

如果你有其他的需求,所以需要特殊的文件来帮你记录时,可以记录在/etc/rsyslog.conf 当中,如此一来,你就可以重复的将许多的信息记录在不同的文件当中,以方便你的管理。

例如你想要让『所有的信息』都额外写入到 /var/log/admin.log 这个文件时:

# 1. 先设定好所要建立的文件设置!
[root@study ~]# vim /etc/rsyslog.conf
# Add by VBird 2015/08/19 <==再次强调,自己修改的时候加入一些说明
*.info /var/log/admin.log <==有用的是这行啦!

# 2. 重新启动 rsyslogd 呢!
[root@study ~]# systemctl restart rsyslog.service
[root@study ~]# ll /var/log/admin.log
-rw-r--r--. 1 root root 325 Aug 20 00:54 /var/log/admin.log
# 瞧吧!建立了这个登录档出现啰!

登录档的安全性设置

如果幻想你是一个很厉害的黑客,想利用他人的计算机干坏事,然后又不想留下证据, 你会怎么作?就是离开的时候将屁股擦干净,将所有可能的讯息都给他抹煞掉, 所以第一个动脑筋的地方就是登录档的清除工作~ 如果你的登录档不见了,那该怎办?

我们可以透过一个隐藏的属性来设定你的登录档,成为『 只可以增加数据,但是不能被删除 』的状态,那么或许可以达到些许的保护!不过,如果你的 root账号被破解了,那么底下的设定还是无法保护的,因为你要记得『 root 是可以在系统上面进行任何事情的 』,因此,请将你的 root 这个账号的密码设定的安全一些千万不要轻忽这个问题

之前说过lsattr 与 chattr 这两个指令如果将一个文件以 chattr 设定 i 这个属性时,那么该文件连 root 都不能杀掉而且也不能新增数据 ;但是,如此一来登录文件的功能也就消失,因为没有办法写入 。

所以,我们要使用的是 a 这个属性你的日志文件如果设定了这个属性的话,那么他将只能被增加,而不能被删除! 这个属性就非常的符合我们日志文档的需求!因此,你可以这样的增加你的登录文件的隐藏属性。

[root@study ~]# chattr +a /var/log/admin.log
[root@study ~]# lsattr /var/log/admin.log
-----a---------- /var/log/admin.log

加入了这个属性之后,你的 /var/log/admin.log 登录档从此就仅能被增加,而不能被删除,直到 root 以『 chattr -a /var/log/admin.log 』取消这个 a 的参数之后,才能被删除或移动。

要注意的是,当『 你不小心 "手动" 更动过登录档后,例如那个/var/log/messages , 你不小心用 vi 开启他,离开却下达 :wq 的参数那么该文件未来将不会再继续进行登录动作! 』这个问题真的很常发生!由于你以 vi 储存了登录档,则 rsyslogd 会误判为该文件已被更动过, 将导致 rsyslogd 不再写入该文件新的内容

要让该日志文档可以继续写入,你只要重新启动 rsyslogd.service 即可。 不过,总是比较麻烦。所以啊,如果你针对登录档下达 chattr +a 的参数, 未来你就不需要害怕不小心更动到该文件了,因为无法写入。

不过,也因为这个 +a 的属性让该文件无法被删除与修改,所以啰,当我们进行登录文件轮替时(logrotate) ,将会无法移动该登录档的档名,所以会造成很大的困扰。这个困扰虽然可以使用logrotate 的配置文件来解决,但是,还是先将登录档的 +a 旗标拿掉。

[root@study ~]# chattr -a /var/log/admin.log

日志文档服务器的设定

CentOS 7.x 预设的 rsyslogd 本身就已经具有这个登录文件服务器的功能了, 只是默认并没有启动该功能而已。你可以透过 man rsyslogd 去查询一下相关的选项就能够知道;

既然是登录档服务器,那么我们的 Linux 主机当然会启动一个埠口来监听了,那个预设的端口就是 UDP 或 TCP 的 port 514 ;

如上图所示,服务器会启动监听的埠口,客户端则将登录档再转出一份送到服务器去。 而既然是登录档『服务器』,所以当然有服务器与客户端 (client) ,这两者的设定分别是这样的:

# 1. Server 端:修改 rsyslogd 的启动配置文件,在 /etc/rsyslog.conf 内!
[root@study ~]# vim /etc/rsyslog.conf
# 找到底下这几行:
# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514
# 上面的是 UDP 埠口,底下的是 TCP 埠口!如果你的网络状态很稳定,就用 UDP 即可。
# 不过,如果你想要让数据比较稳定传输,那么建议使用 TCP 啰!所以修改底下两行即可!
$ModLoad imtcp
$InputTCPServerRun 514

# 2. 重新启动与观察 rsyslogd 喔!
[root@study ~]# systemctl restart rsyslog.service
[root@study ~]# netstat -ltnp | grep syslog
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 2145/rsyslogd
tcp6 0 0 :::514 :::* LISTEN 2145/rsyslogd
# 嘿嘿!你的登录文件主机已经设定妥当啰!很简单吧!

透过这个简单的动作,你的 Linux 主机已经可以接收来自其他主机的登录信息了

至于 client 端的设定就简单多了!只要指定某个信息传送到这部主机即可! 举例来说,我们的登录档服务器 IP 为 192.168.1.100 ,而 client 端希望所有的数据都送给主机, 所以,可以在/etc/rsyslog.conf 里面新增这样的一行:

[root@study ~]# vim /etc/rsyslog.conf
*.* @@192.168.1.100
#*.* @192.168.1.100 # 若用 UDP 传输,设定要变这样!

[root@study ~]# systemctl restart rsyslog.service

再重新启动 rsyslog.service 后,立刻就搞定了;而未来主机上面的登录文件当中,每一行的『主机名』就会显示来自不同主机的信息了。

日志文档的轮替(logrotate)

请特别留意的是: 『rsyslogd 利用的是 daemon 的方式来启动的,当有需求的时候立刻就会被执行的,但是 logrotate 却是在规定的时间到了之后才来进行登录档的轮替, 所以这个 logrotate 程序当然就是挂在 cron 底下进行的』

查看/etc/cron.daily/ 里面的文件/etc/cron.daily/logrotate 就是记录了每天要进行的登录档轮替的行为

logrotate 的配置文件

参数配置文件:

  • /etc/logrotate.conf
  • /etc/logrotate.d/

logrotate.conf 才是主要的参数文件至于 logrotate.d 是一个目录, 该目录里面的所有文件都会被主动的读入 /etc/logrotate.conf 当中来进行。另外,在 /etc/logrotate.d/ 里面的文件中,如果没有规定到的一些细部设定,则以 /etc/logrotate.conf 这个文件的规定来指定为默认值

logrotate 的主要功能就是将旧的登录文件移动成旧档, 并且重新建立一个新的空的文件来记录,他的执行结果有点类似底下的图示:

由上面的图示我们可以清楚的知道,当第一次执行完 rotate 之后,原本的 messages 会变成messages.1 而且会制造一个空的 messages 给系统来储存登录文件。而第二次执行之后,则messages.1 会变成 messages.2 而 messages 会变成 messages.1 ,又造成一个空的 messages 来储存登录档;那么如果我们仅设定保留三个登录档而已的话,那么执行第四次时,则 messages.3 这个文件就会被删除,并由后面的较新的保存登录档所取代。

logrotate 预设参数如下:

[root@study ~]# vim /etc/logrotate.conf
# 底下的设定是 "logrotate 的预设设定值" ,如果个别的文件设定了其他的参数,
# 则将以个别的文件设定为主,若该文件没有设定到的参数则以这个文件的内容为默认值!

weekly <==预设每个礼拜对登录档进行一次 rotate 的工作
rotate 4 <==保留几个登录档呢?预设是保留四个!
create <==由于登录档被更名,因此建立一个新的来继续储存之意!
dateext <==就是这个设定值!可以让被轮替的文件名加上日期作为档名喔!
#compress <==被更动的登录档是否需要压缩?如果登录档太大则可考虑此参数启动

include /etc/logrotate.d
# 将 /etc/logrotate.d/ 这个目录中的所有文件都读进来执行 rotate 的工作!

/var/log/wtmp { 	 	  <==仅针对 /var/log/wtmp 所设定的参数
    monthly				 <==每个月一次,取代每周!
    create 0664 root utmp <==指定新建文件的权限与所属账号/群组
    minsize 1M 			 <==文件容量一定要超过 1M 后才进行 rotate (略过时间参数)
    rotate 1 			 <==仅保留一个,亦即仅有 wtmp.1 保留而已。
}
# 这个 wtmp 可记录登入者与系统重新启动时的时间与来源主机及登入期间的时间。
# 由于具有 minsize 的参数,因此不见得每个月一定会进行一次喔!要看文件容量。
# 由于仅保留一个登录档而已,不满意的话可以将他改成 rotate 5 吧!

由这个文件的设定我们可以知道 /etc/logrotate.d 其实就是由 /etc/logrotate.conf 所规划出来的目录,所以,其实我们可以将所有的资料都给他写入 /etc/logrotate.conf 即可,但是这样一来这个文件就实在是太复杂了,尤其是当我们使用很多的服务在系统上面时,每个服务都要去修改 /etc/logrotate.conf的设定也似乎不太合理~ 所以,如果独立出来一个目录,那么每个以 RPM 打包方式所建立的服务的登录档轮替设定, 就可以独自成为一个文件,并且放置到 /etc/logrotate.d/ 当中即可,真是方便又合理的做法。

logrotate.conf 的设定语法是:

登录文件的绝对路径文件名 ... {
	个别的参数设定值,如 monthly, compress 等等
}

再以 /etc/logrotate.d/syslog 这个轮替 rsyslog.service 服务的文件,来看看该如何设定他的rotate。

[root@study ~]# vim /etc/logrotate.d/syslog
    /var/log/cron
    /var/log/maillog
    /var/log/messages
    /var/log/secure
    /var/log/spooler
{
    sharedscripts
    postrotate
    	/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

在上面的语法当中,我们知道正确的 logrotate 的写法为:

  • 文档名:被处理的日志文件绝对路径文件名写在前面,可以使用空格符分隔多个登录档;
  • 参数:上述档名进行轮替的参数使用 { } 包括起来;
  • 执行脚本:可呼叫外部指令来进行额外的命令下达,这个设定需与 sharedscripts .... endscript 设定合用才行。至于可用的环境为:
    • prerotate:在启动 logrotate 之前进行的指令,例如修改登录文件的属性等动作;
    • postrotate:在做完 logrotate 之后启动的指令,例如重新启动 (kill -HUP) 某个服务!
    • Prerotate 与 postrotate 对于已加上特殊属性的文件处理上面,是相当重要的执行程序!

那么 /etc/logrotate.d/syslog 内设定的 5 个文件的轮替功能就变成了:

  • 该设定只对 /var/log/ 内的 cron, maillog, messages, secure, spooler 有效;
  • 登录档轮替每周一次、保留四个、且轮替下来的登录档不进行压缩(未更改默认值);
  • 轮替完毕后 (postrotate) 取得 syslog 的 PID 后,以 kill -HUP 重新启动 syslogd

假设我们有针对 /var/log/messages 这个文件增加 chattr +a 的属性时, 依据 logrotate 的工作原理,我们知道,这个 /var/log/messages 将会被更名成为 /var/log/messages.1 才是。但是由于加上这个 +a的参数啊,所以更名是不可能成功的! 那怎么办呢?就利用 prerotate 与 postrotate 来进行日志文档轮替前、后所需要作的动作,那么你可以这样修改一下这个文件:

[root@study ~]# vim /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts
    prerotate
    /usr/bin/chattr -a /var/log/messages
endscript
sharedscripts
    postrotate
    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    /usr/bin/chattr +a /var/log/messages
endscript
}

先给他去掉 a 这个属性,让登录文件 /var/log/messages 可以进行轮替的动作, 然后执行了轮替之后,再给他加入这个属性;

请特别留意的是,那个 /bin/kill -HUP ... 的意义,这一行的目的在于将系统的 rsyslogd 重新以其参数档 (rsyslog.conf) 的资料读入一次也可以想成是 reload的意思由于我们建立了一个新的空的记录文件,如果不执行此一行来重新启动服务的话, 那么记录的时候将会发生错误。

自定义日志文件的轮替功能

假设你已经建立了 /var/log/admin.log 这个文件, 现在,你想要将该文件加上 +a 这个隐藏标签,而且设定底下的相关信息:

  • 登录档轮替一个月进行一次;
  • 该登录档若大于 10MB 时,则主动进行轮替,不需要考虑一个月的期限;
  • 保存五个备份文件;
  • 备份文件需要压缩
# 1. 先建立 +a 这个属性啊!
[root@study ~]# chattr +a /var/log/admin.log
[root@study ~]# lsattr /var/log/admin.log
-----a---------- /var/log/admin.log
[root@study ~]# mv /var/log/admin.log /var/log/admin.log.1
mv: cannot move `/var/log/admin.log' to `/var/log/admin.log.1': Operation not permitted
# 这里确定了加入 a 的隐藏属性!所以 root 无法移动此登录档!

# 2. 开始建立 logrotate 的配置文件,增加一个文件在 /etc/logrotate.d 内就对了!
[root@study ~]# vim /etc/logrotate.d/admin
# This configuration is from VBird 2015/08/19
/var/log/admin.log {
    monthly <==每个月进行一次
    size=10M <==文件容量大于 10M 则开始处置
    rotate 5 <==保留五个!
    compress <==进行压缩工作!
    sharedscripts
        prerotate
        /usr/bin/chattr -a /var/log/admin.log
    endscript
    sharedscripts
        postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
        /usr/bin/chattr +a /var/log/admin.log
    endscript
}
# 3. 测试一下 logrotate 相关功能的信息显示:
[root@study ~]# logrotate -v /etc/logrotate.conf
....(前面省略)....
rotating pattern: /var/log/admin.log 10485760 bytes (5 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/admin.log
log does not need rotating
not running prerotate script, since no logs will be rotated
not running postrotate script, since no logs were rotated
....(底下省略)....
# 因为还不足一个月,文件也没有大于 10M,所以不需进行轮替!

# 4. 测试一下强制 logrotate 与相关功能的信息显示:
[root@study ~]# logrotate -vf /etc/logrotate.d/admin
reading config file /etc/logrotate.d/admin
eading config file /etc/logrotate.d/admin

Handling 1 logs

rotating pattern: /var/log/admin.log forced from command line (5 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/admin.log
log needs rotating
rotating log /var/log/admin.log, log->rotateCount is 5
dateext suffix '-20150820'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /var/log/admin.log.5.gz to /var/log/admin.log.6.gz (rotatecount 5, logstart 1, i 5),
old log /var/log/admin.log.5.gz does not exist
renaming /var/log/admin.log.4.gz to /var/log/admin.log.5.gz (rotatecount 5, logstart 1, i 4),
old log /var/log/admin.log.4.gz does not exist
renaming /var/log/admin.log.3.gz to /var/log/admin.log.4.gz (rotatecount 5, logstart 1, i 3),
old log /var/log/admin.log.3.gz does not exist
renaming /var/log/admin.log.2.gz to /var/log/admin.log.3.gz (rotatecount 5, logstart 1, i 2),
old log /var/log/admin.log.2.gz does not exist
renaming /var/log/admin.log.1.gz to /var/log/admin.log.2.gz (rotatecount 5, logstart 1, i 1),
old log /var/log/admin.log.1.gz does not exist
renaming /var/log/admin.log.0.gz to /var/log/admin.log.1.gz (rotatecount 5, logstart 1, i 0),
old log /var/log/admin.log.0.gz does not exist
log /var/log/admin.log.6.gz doesn't exist -- won't try to dispose of it
running prerotate script
fscreate context set to system_u:object_r:var_log_t:s0
renaming /var/log/admin.log to /var/log/admin.log.1
running postrotate script
compressing log with: /bin/gzip

[root@study ~]# lsattr /var/log/admin.log*
-----a---------- /var/log/admin.log
---------------- /var/log/admin.log.1.gz <==有压缩过喔

systemd-journald.service 简介

过去只有 rsyslogd 的年代中,由于 rsyslogd 必须要开机完成并且执行了 rsyslogd 这个 daemon 之后,登录文件才会开始记录。所以,核心还得要自己产生一个 klogd 的服务, 才能将系统在开机过程、启动服务的过程中的信息记录下来,然后等 rsyslogd 启动后才传送给它来处理。

现在有了 systemd 之后,由于这玩意儿是核心唤醒的,然后又是第一支执行的软件,它可以主动呼叫 systemd-journald 来协助记载登录文件~ 因此在开机过程中的所有信息,包括启动服务与服务若启动失败的情况等等,都可以直接被记录到 systemd-journald 里头去

不过 systemd-journald 由于是使用于内存的登录文件记录方式,因此重新启动过后,开机前的登录文件信息当然就不会被记载了。 为此,我们还是建议启动 rsyslogd 来协助分类记录也就是说,systemd-journald 用来管理与查询这次开机后的登录信息,而 rsyslogd 可以用来记录以前及现在的所以数据到磁盘文件中,方便未来进行查询

虽然 systemd-journald 所记录的数据其实是在内存中,但是系统还是利用文件的型态将它记录到 /run/log/ 底下! 不过我们从前面几章也知道, /run 在 CentOS 7 其实是内存内的数据,所以重新启动过后,这个 /run/log 底下的数据当然就被刷新,旧的当然就不再存在了。

使用 journalctl 观察登录信息

查看systemd-journald.service 的数据,使用 journalctl 指令。

[root@study ~]# journalctl [-nrpf] [--since TIME] [--until TIME] _optional
选项与参数:
预设会秀出全部的 log 内容,从旧的输出到最新的讯息
-n :秀出最近的几行的意思~找最新的信息相当有用
-r :反向输出,从最新的输出到最旧的数据
-p :秀出后面所接的讯息重要性排序!请参考前一小节的 rsyslogd 信息
-f :类似 tail -f 的功能,持续显示 journal 日志的内容(实时监测时相当有帮助!)
--since --until:设定开始与结束的时间,让在该期间的数据输出而已
_SYSTEMD_UNIT=unit.service :只输出 unit.service 的信息而已
_COMM=bash :只输出与 bash 有关的信息
_PID=pid :只输出 PID 号码的信息
_UID=uid :只输出 UID 为 uid 的信息
SYSLOG_FACILITY=[0-23] :使用 syslog.h 规范的服务相对序号来呼叫出正确的数据!

范例一:秀出目前系统中所有的 journal 日志数据
[root@study ~]# journalctl
-- Logs begin at Mon 2015-08-17 18:37:52 CST, end at Wed 2015-08-19 00:01:01 CST. --
Aug 17 18:37:52 study.centos.vbird systemd-journal[105]: Runtime journal is using 8.0M (max
142.4M, leaving 213.6M of free 1.3G, current limit 142.4M).
Aug 17 18:37:52 study.centos.vbird systemd-journal[105]: Runtime journal is using 8.0M (max
142.4M, leaving 213.6M of free 1.3G, current limit 142.4M).
Aug 17 18:37:52 study.centos.vbird kernel: Initializing cgroup subsys cpuset
Aug 17 18:37:52 study.centos.vbird kernel: Initializing cgroup subsys cpu
.....(中间省略).....
Aug 19 00:01:01 study.centos.vbird run-parts(/etc/cron.hourly)[19268]: finished 0anacron
Aug 19 00:01:01 study.centos.vbird run-parts(/etc/cron.hourly)[19270]: starting 0yum-hourly.cron
Aug 19 00:01:01 study.centos.vbird run-parts(/etc/cron.hourly)[19274]: finished 0yum-hourly.cron
# 从这次开机以来的所有数据都会显示出来!透过 less 一页页翻动给管理员查阅!资料量相当大!

范例二:(1)仅显示出 2015/08/18 整天以及(2)仅今天及(3)仅昨天的日志数据内容
[root@study ~]# journalctl --since "2015-08-18 00:00:00" --until "2015-08-19 00:00:00"
[root@study ~]# journalctl --since today
[root@study ~]# journalctl --since yesterday --until today

范例三:只找出 crond.service 的数据,同时只列出最新的 10 笔即可
[root@study ~]# journalctl _SYSTEMD_UNIT=crond.service -n 10

范例四:找出 su, login 执行的登录档,同时只列出最新的 10 笔即可
[root@study ~]# journalctl _COMM=su _COMM=login -n 10

范例五:找出讯息严重等级为错误 (error) 的讯息!
[root@study ~]# journalctl -p err

范例六:找出跟登录服务 (auth, authpriv) 有关的登录文件讯息
[root@study ~]# journalctl SYSLOG_FACILITY=4 SYSLOG_FACILITY=10
# 更多关于 syslog_facility 的数据,请参考 18.2.1 小节的内容啰!

想要了解到日志文档的实时变化,下面的方式将开启两个终端,进行监控:

# 第一号终端机,请使用底下的方式持续侦测系统!
[root@study ~]# journalctl -f
# 这时系统会好像卡住~其实不是卡住啦!是类似 tail -f 在持续的显示登录文件信息的!

# 第二号终端机,使用底下的方式随便发一封 email 给系统上的账号!
[root@study ~]# echo "testing" | mail -s 'tset' dmtsai
# 这时,你会发现到第一号终端机竟然一直输出一些讯息吧!没错!这就对了!

如果你有一些必须要侦测的行为,可以使用这种方式来实时了解到系统出现的讯息~而取消journalctl -f 的方法,就是 [crtl]+c 。

logger 指令的应用

如果你想要让数据储存到日志文件当中,可以使用 logger 指令。

[root@study ~]# logger [-p 服务名称.等级] "讯息"
选项与参数:
服务名称.等级 :这个项目请参考 rsyslogd 的本章后续小节的介绍;

范例一:指定一下,让 dmtsai 使用 logger 来传送数据到登录文件内
[root@study ~]# logger -p user.info "I will check logger command"
[root@study ~]# journalctl SYSLOG_FACILITY=1 -n 3
-- Logs begin at Mon 2015-08-17 18:37:52 CST, end at Wed 2015-08-19 18:03:17 CST. --
Aug 19 18:01:01 study.centos.vbird run-parts(/etc/cron.hourly)[29710]: starting 0yum-hourly.cron
Aug 19 18:01:01 study.centos.vbird run-parts(/etc/cron.hourly)[29714]: finished 0yum-hourly.cron
Aug 19 18:03:17 study.centos.vbird dmtsai[29753]: I will check logger command

保存 journal 的方式

再强调一次,这个 systemd-journald.servicd 的讯息是不会放到下一次开机后的,所以,重新启动后,那之前的记录通通会遗失。 虽然我们大概都有启动 rsyslogd 这个服务来进行后续的登录档放置,不过如果你比较喜欢 journalctl 的存取方式,那么可以将这些数据储存下来。

基本上,systemd-journald.service 的配置文件主要参考 /etc/systemd/journald.conf 的内容,详细的参数你可以参考 man 5 journald.conf 的资料。

只是如果想要保存你的 journalctl 所读取的登录档,那么就得要建立一个 /var/log/journal 的目录,并且处理一下该目录的权限,那么未来重新启动systemd-journald.service 之后, 日志登录文件就会主动的复制一份到 /var/log/journal 目录下 。

# 1. 先处理所需要的目录与相关权限设定
[root@study ~]# mkdir /var/log/journal
[root@study ~]# chown root:systemd-journal /var/log/journal
[root@study ~]# chmod 2775 /var/log/journal

# 2. 重新启动 systemd-journald 并且观察备份的日志数据!
[root@study ~]# systemctl restart systemd-journald.service
[root@study ~]# ll /var/log/journal/
drwxr-sr-x. 2 root systemd-journal 27 Aug 20 02:37 309eb890d09f440681f596543d95ec7a

你得要注意的是,因为现在整个日志登录文件的容量会持续长大,因此你最好还是观察一下你系统能用的总容量喔!避免不小心文件系统的容量被灌爆! 此外,未来在 /run/log 底下就没有相关的日志可以观察了!因为移动到 /var/log/journal 底下 。

既然我们还有 rsyslog.service 以及 logrotate 的存在,因此这个systemd-journald.service 产生的登录档, 个人建议最好还是放置到 /run/log 的内存当中,以加快存取的速度!而既然 rsyslog.service 可以存放我们的登录档, 似乎也没有必要再保存一份 journal 登录文件到系统当中就是了。单纯的建议 。

分析登录档

你可以自行以 vim 或者是 journalctl 进入日志文件去查阅相关的信息。而系统也提供一些软件可以让你从日志文件中取得资料, 例如之前谈过的 last, lastlog, dmesg 等等指令。

不过,这些数据毕竟都非常的分散,如果你想要一口气读取所有的登录信息, 其实有点困扰的。不过,好在 CentOS 有提供 logwatch 这个日志文件分析程序,你可以藉由该程序来了解日志文件信息

CentOS 预设提供的 logwatch

虽然有一些有用的系统指令,不过,要了解系统的状态,还是得要分析整个登录档才行~ 事实上,目前已经有相当多的登录档分析工具,例如 CentOS 7.x 上面预设的 logwatch 这个套件所提供的分析工具, 他会每天分析一次登录文件,并且将数据以 email 的格式寄送给 root 。

我们先来安装一下 logwatch这套软件再说。假设你已经将 CentOS 7.1 的原版光盘挂载在 /mnt 当中了,那使用底下的方式来处理即可:

[root@study ~]# yum install /mnt/Packages/perl-5.*.rpm
> /mnt/Packages/perl-Date-Manip-*.rpm \
> /mnt/Packages/perl-Sys-CPU-*.rpm \
> /mnt/Packages/perl-Sys-MemInfo-*.rpm \
> /mnt/Packages/logwatch-*.rpm
# 得要安装数个软件才能够顺利的安装好 logwatch 喔!当然,如果你有网络,直接安装就好了!

[root@study ~]# ll /etc/cron.daily/0logwatch
-rwxr-xr-x. 1 root root 434 Jun 10 2014 /etc/cron.daily/0logwatch

[root@study ~]# /etc/cron.daily/0logwatch

安装完毕以后,logwatch 就已经写入 cron 的运作当中了; 详细的执行方式你可以参考上表中0logwatch 文件内容来处理,未来则每天会送出一封 email 给 root 查阅就是了

直接执行 0logwatch ,然后用 root 的身份去读一下email:

[root@study ~]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 5 messages 2 new 4 unread
>N 4 root Thu Jul 30 19:35 29/763 "testing at job"
N 5 logwatch@study.cento Thu Aug 20 17:55 97/3045 "Logwatch for study.centos.vbird (Linux)"
& 5
Message 5:
From root@study.centos.vbird Thu Aug 20 17:55:23 2015
Return-Path: <root@study.centos.vbird>
X-Original-To: root
Delivered-To: root@study.centos.vbird
To: root@study.centos.vbird
From: logwatch@study.centos.vbird
Subject: Logwatch for study.centos.vbird (Linux)
Auto-Submitted: auto-generated
Precedence: bulk
Content-Type: text/plain; charset="iso-8859-1"
Date: Thu, 20 Aug 2015 17:55:23 +0800 (CST)
Status: R

# logwatch 会先说明分析的时间与 logwatch 版本等等信息
################### Logwatch 7.4.0 (03/01/11) ####################
    Processing Initiated: Thu Aug 20 17:55:23 2015
    Date Range Processed: yesterday
                        ( 2015-Aug-19 )
                        Period is day.
    Detail Level of Output: 0
    Type of Output/Format: mail / text
    Logfiles for Host: study.centos.vbird
##################################################################
# 开始一项一项的数据进行分析!分析得很有道理啊!
--------------------- pam_unix Begin ------------------------
su-l:
	Sessions Opened:
		dmtsai -> root: 2 Time(s)
---------------------- pam_unix End -------------------------

--------------------- Postfix Begin ------------------------
    894 	Bytes accepted 							894
    894 	Bytes delivered 						894
======== ==================================================
	2 		Accepted 							100.00%
-------- --------------------------------------------------
	2 		Total 								100.00%
======== ==================================================
	2 Removed from queue
	2 Delivered
---------------------- Postfix End -------------------------

--------------------- SSHD Begin ------------------------
Users logging in through sshd:
	dmtsai:
		192.168.1.200: 2 times
Received disconnect:
	11: disconnected by user : 1 Time(s)
---------------------- SSHD End -------------------------

--------------------- Sudo (secure-log) Begin ------------------------
dmtsai => root
--------------
/bin/su 		- 2 Time(s).
---------------------- Sudo (secure-log) End -------------------------

# 当然也得说明一下目前系统的磁盘使用状态喔!
--------------------- Disk Space Begin ------------------------
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 10G 3.7G 6.3G 37% /
devtmpfs 1.4G 0 1.4G 0% /dev
/dev/vda2 1014M 141M 874M 14% /boot
/dev/vda4 1014M 33M 982M 4% /srv/myproject
/dev/mapper/centos-home 5.0G 642M 4.4G 13% /home
/dev/mapper/raidvg-raidlv 1.5G 33M 1.5G 3% /srv/raidlvm
---------------------- Disk Space End -------------------------
posted @ 2023-05-29 00:02  CD、小月  阅读(33)  评论(0编辑  收藏  举报