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