linux-log

Posted osoft

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux-log相关的知识,希望对你有一定的参考价值。

1. linux日志分类
2. 日志文件目录
3. 转储配置文件
4. 更多相关链接
5. proc目录(原文摘录)
6. 日志恢复(原文摘录)

1. linux日志分类

Linux系统的日志文件按文件类型可分为:

  • 二进制格式(只能使用专用命令访问), 比如:wtmp文件需要用last,ac查看; system.journal文件需要用journalctl查看;
  • 文本文件(application log), 通常以.log作为后缀.(可以使用cat, grep等常规软件访问, 部分也会自带专用命令).

按照功能可分为:

  • 连接时间日志: 由多个程序执行,它把记录写到/var/log/wtmp和/var/run/utmp当中,而login程序负责更新wtmp和utmp文件,使得系统管理员能够够跟踪谁在何时登录了系统。
  • 进程统计日志: 由内核执行,当一个进程终止时,每个进程都会向统计文件pacct或者acct中写入一个记录。进程统计的目的是为了系统中的基本服务提供命令使用统计。
  • 系统日志: 曾经的syslog, 现在的journalctl.
  • 应用程序日志: 用户按需安装的应用程序的日志文件. 软件安装日志, 防火墙日志, 杀毒软件日志等.

2. 日志文件目录

/var/log/ group user 子目录 文件名 $启动 文件类型 说明 查看命令
drwx------ root root account/ $ sudo accton on
pacct 日志文件;
systemctl status acct.service
二进制 内核执行,当一个进程终止时,每个进程都会向统计文件pacct或者acct中写入一个记录 lastcomm 列表;
sa 列出统计
drwx------ root root audit/ audit.log 日志文件;
systemctl status auditd.service
application log aureport -s -i –summary
ausearch 查找审计事件的工具
 
drwx--x--x root lightdm lightdm/ lightdm.log application log 桌面管理器 cat…
drwxr-sr-x+ root systemd-journal journal/ system.journal 二进制 系统日志 journalctl -r -p 4
drwxr-xr-x clamav clamav clamav/ clamd.log, freshclam.log; application log 杀毒软件 cat…
drwxr-xr-x root root cups/ access_log, err_log, page_log plain text document 打印服务 cat…
/var/log/ 用户 文件名 文件类型 说明 查看命令
-rw-rw-r-- root utmp lastlog 二进制 /etc/passwd最后一次登录时间 lastlog
-rw-rw-r-- root utmp wtmp 二进制 用户登录信息 last列表; ac统计
-rw-rw---- root utmp btmp 二进制 记录失败的登录尝试 lastb
-rw------- root root tallylog 二进制 记录认证失败情况,与pam认证登陆有关。  
-rw-r----- root root firewalld 文本文件 tail -f /var/log/firewalld cat…
-rw-r--r-- root root pacman.log application log pacman安装日志 paclog
-rw------- root root rkhunter.log application log   cat…
-rw-r--r-- root root ...dowsocks.log application log   cat…
-rw-r--r-- root root Xorg.0.log application log   cat…

3. 转储配置文件

日志系统使用logrotate来进行自动清除以防止日志文件过大 在/etc/logrotate.conf logrotate.d 中 rotate 为转存次数.
比如: acct 软件包安装时在 /etc/logrotate.d 目录安装了转储配置文件,且文件名也是 acct 。
$ cat /etc/logrotate.conf
$ cd /etc/logrotate.d
$ ls -la --time-style=long-iso |awk \'{print $1"\\t"$2"\\t"$3"\\t"$4"\\t"$5"\\t"$6,$7"\\t"$8,$9,$10}\'
-rw-r--r--412acct
-rw-r--r--430clamav
-rw-r--r--68cups
-rw-r--r--135iptraf-ng-logrotate.conf
-rw-r--r--202privoxy

4. 更多相关链接

Linux系统入门学习:Linux中常用的日志文件 [日期:2015-04-06]
https://www.linuxidc.com/Linux/2015-04/115845.htm

LINUX日志系统之WEB日志(一) 2016-06-04
https://blog.csdn.net/sinat_22991367/article/details/51586420

CallousMaster关注0人评论803人阅读2018-06-29
https://blog.51cto.com/13770206/2134223

https://en.wikipedia.org/wiki/Utmp
https://en.wikipedia.org/wiki/Lastlog

5. proc目录(原文摘录)

https://cloud.tencent.com/developer/article/1383721
/proc 伪文件系统
其中数字命名的目录对应的是各进程的pid号,其内的文件记录的都是该进程当前的数据信息,且都是只读的,例如记录命令信息的cmdline文件,进程使用哪颗cpu信息cpuset,进程占用内存的信息mem文件,进程IO信息io文件等其他各种信息文件。
查看CPU的信息:/proc/cpuinfo
查看内存的信息:/proc/meminfo | free -hm | htop
查看硬盘容量:df -h

进程的详细信息
非数字命名的目录各有用途,例如bus表示总线信息,driver表示驱动信息,fs表示文件系统特殊信息,net表示网络信息,tty表示跟物理终端有关的信息,最特殊的两个是/proc/self和/proc/sys。

/proc/self
它表示的是当前正在访问/proc目录的进程,因为/proc目录是内核数据向外记录的接口,所以当前访问/proc目录的进程表示的就是当前cpu正在执行的进程。如果执行cat /proc/self/cmdline,会发现其结果总是该命令本身,因为cat是手动敲入的命令,它是重要性进程,cpu会立即执行该命令。

/proc/sys
该目录是为管理员提供用来修改内核运行参数的,所以该目录中的文件对root都是可写的,例如管理数据包转发功能的/proc/sys/net/ipv4/ip_forward文件。使用sysctl命令修改内核运行参数,其本质也是修改/proc/sys目录中的文件。
参考链接:http://www.cnblogs.com/f-ck-need-u/p/7059074.html

6. 日志恢复(原文摘录)

https://0bug.xyz/2018/01/17/Linux日志恢复/
2018-01-17 Linux日志删除与恢复
Linux 日志删除
Linux的系统日志一般位于/var/log目录内
日志系统使用logrotate来进行自动清除以防止日志文件过大 在/etc/logrotate.conf logrotate.d 中 rotate 为转存次数

直接删除使用rm
删除一定天数前的日志文件。输入命令:
find /var/log -mtime +3 -name “*.log” -exec rm -rf {} ;
该命令将/var/log/目录下所有3天前带“.log”的文件删除。
Tips: find 命令的使用: -mtime -n +n 按照文件的更改时间来查找文件,-n表示n天以内,+n表示n天以前

脚本删除
cat /dev/null > /var/log/lastlog
cat /dev/null 可以看作一个”黑洞”. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.
因此可以使用此命令构建删除脚本: clear_log.sh
#!/bin/sh
cat /dev/null > /var/log/lastlog
...

清除history
history -c
简单清除history 很容易被发现,因此需要按需删除记录在bash_history中的内容

Linux 日志恢复
原理: 当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。

要将日志恢复,首先要确保日志进程未停止运行,利用lsof命令找到该进程,利用进程标识符和文件描述符,使用cat命令将内容重写到日志文件,然后重启日志记录服务。

lsof的使用
List Open Files 一个非常实用的系统级的监控、诊断工具. 是有着最多开关的Linux/Unix命令之一
lsof直接输入, 列出活跃进程的所有打开文件
信息如下:
COMMAND | 进程的名称; PID | 进程标识符; USER | 进程所有者;
FD | 文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等;
TYPE | 文件类型,如DIR、REG等; DEVICE | 指定磁盘的名称; SIZE | 文件的大小;
NODE | 索引节点(文件在磁盘上的标识); NAME | 打开文件的确切名称.

-i显示所有网络连接;
filename显示开启filename文件的进程;
-c processname显示该进程打开的文件;
-c -p pid显示该进程号对应的进程打开的文件;
-d dir显示该目录下被打开的文件;
-D dir同上 迭代显示目录下所有文件夹.

/proc/N/fdN为进程Pid ,该文件夹中包含进程相关的所有的文件描述符
/proc/N/status进程的状态
查看日志情况
使用lsof命令查看目前打开丢失日志的进程
如 lsof | grep /var/log/syslog ,便可得到相应信息 COMMAND、PID、FD
使用wc命令查看日志情况
如 wc -l /proc/1/fd/1 可查看在内存中的日志记录
重写日志
cat /proc/1/fd/1 > /var/log/syslog

重启服务
对于许多应用程序,尤其是日志文件和数据库,这种恢复删除文件的方法非常有用。

以上是关于linux-log的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数