zoukankan      html  css  js  c++  java
  • 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" "$2" "$3" "$4" "$5" "$6,$7" "$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

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

  • 相关阅读:
    switch statement
    Block statement
    Variable hoisting Global variables Constants
    How the Web works
    Discover browser developer tools
    Publishing via GitHub
    第十二节,OpenCV学习(一)图像的读取、显示、保存
    剑指Offer编程题3——从尾到头打印链表
    剑指Offer编程题2——替换空格
    剑指Offer编程题1——二维数组中的查找
  • 原文地址:https://www.cnblogs.com/sztom/p/13346725.html
Copyright © 2011-2022 走看看