linux中怎样查看日志

Posted

tags:

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

方法/步骤

    先必须了解两个最基本的命令:

    tail  -n  10  test.log   查询日志尾部最后10行的日志;

    tail -n +10 test.log    查询10行之后的所有日志;

    head -n 10  test.log   查询日志文件中的头10行日志;

    head -n -10  test.log   查询日志文件除了最后10行的其他所有日志;

    场景1: 按行号查看---过滤出关键字附近的日志

    因为通常时候我们用grep拿到的日志很少,我们需要查看附近的日志.

    我是这样做的,首先: cat -n test.log |grep "地形"  得到关键日志的行号

    <3>得到"地形"关键字所在的行号是102行. 此时如果我想查看这个关键字前10行和后10行的日志:

    cat -n test.log |tail -n +92|head -n 20

    tail -n +92表示查询92行之后的日志

    head -n 20 则表示在前面的查询结果里再查前20条记录

    场景2:那么按日期怎么查呢?  通常我们非常需要查找指定时间端的日志

    sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p'  test.log

    特别说明:上面的两个日期必须是日志中打印出来的日志,否则无效.

    关于日期打印,可以先 grep '2014-12-17 16:17:20' test.log 来确定日志中是否有该时间点,以确保第4步可以拿到日志

    这个根据时间段查询日志是非常有用的命令.

    如果我们查找的日志很多,打印在屏幕上不方便查看, 有两个方法:

    (1)使用more和less命令, 如: cat -n test.log |grep "地形" |more     这样就分页打印了,通过点击空格键翻页

    (2)使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析.如:

    cat -n test.log |grep "地形"  >xxx.txt

    这几个日志查看方法应该可以满足日常需求了.

参考技术A 在Linux系统中,有三个主要的日志子系统:
连接时间日志--由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。
进程统计--由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。
错误日志--由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。

常用的日志文件如下:
access-log         纪录HTTP/web的传输

acct/pacct         纪录用户命令

aculog           纪录MODEM的活动

btmp            纪录失败的纪录

lastlog  纪录最近几次成功登录的事件和最后一次不成功的登录

messages    从syslog中记录信息(有的链接到syslog文件)系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一

sudolog           纪录使用sudo发出的命令

sulog           纪录使用su命令的使用

syslog     从syslog中记录信息(通常链接到messages文件)

utmp            纪录当前登录的每个用户

wtmp        一个用户每次登录进入和退出时间的永久纪录

xferlog           纪录FTP会话
/var/log/secure与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息

Linux定时器工具-crontab 各參数具体解释及怎样查看日志记录

要使用crontab定时器工具,必需要启动cron服务:

service cron start

crontab的语法,以备日后救急。先上张超给力的图:

技术分享


crontab各參数说明:

-e : 运行文字编辑器来编辑crontab,内定的文字编辑器是VI

-r : 删除眼下的crontab

-l : 列出眼下的crontab(查看专用)

-i : 会和-r 配合使用,在删除当前的crontab时询问,输入y 则删除

注意crontab是分用户的,以谁登录就会编辑到谁的crontab

crontab特殊的符号说明:

"*"代表全部的取值范围内的数字。特别要注意哦!



"/"代表每的意思,如"*/5"表示每5个单位

"-"代表从某个数字到某个数字

","分散的数字

crontab文件的使用演示样例:

30 21 * * * 表示每晚的21:30 

45 4 1,10,22 * * 表示每月1、10、22日的4 : 45

10 1 * * 6,0 表示每周六、周日的1 : 10

0,30 18-23 * * * 表示在每天18 : 00至23 : 00之间每隔30分钟

0 23 * * 6 表示每星期六的11 : 00 pm

* */1 * * * 每一小时

* 23-7/1 * * * 晚上11点到早上7点之间,每隔一小时

* 8,13 * * 1-5 从周一到周五的上午8点和下午1点

0 11 4 * mon-wed 每月的4号与每周一到周三的11点

0 4 1 jan * 一月一号的4点


-------------------------------- 怎样启动crontab的日志服务 --------------------------------------------------------

发现UBuntu下竟然没有自己主动打开cron的日志服务功能,解决方法例如以下

cron的日志功能使用syslogd服务,不同版本号linux可能装了不同的软件,这里介绍常见的两种:

sysklogd>>>>>>

1. 编辑 /etc/syslog.conf。而且打开以cron.*開始的那行凝视。

 
2. 执行 /etc/init.d/sysklogd restart 。 
3. 执行 /etc/init.d/cron restart 。

rsyslog>>>>>>

1. 改动rsyslog文件。将/etc/rsyslog.d/50-default.conf 文件里的#cron.*前的#删掉;
2. 重新启动rsyslog服务service rsyslog restart
3. 重新启动cron服务service cron restart


-------------------------------- 怎样查看crontab的日志记录 --------------------------------------------------------

昨天crontab中的同步任务没有运行。不知道是什么原因没有运行,貌似任务hang住了,想查询一下crontab究竟问题出在哪里,或者hang在了什么地方。



1. linux
看 /var/log/cron这个文件就能够。能够用tail -f /var/log/cron观察

2. unix
在 /var/spool/cron/tmp文件里,有croutXXX001864的tmp文件,tail 这些文件就能够看到正在运行的任务了。

3. mail任务
在 /var/spool/mail/root 文件里,有crontab运行日志的记录,用tail -f /var/spool/mail/root 就可以查看近期的crontab运行情况。



































































以上是关于linux中怎样查看日志的主要内容,如果未能解决你的问题,请参考以下文章

怎样查看linux系统的重启日志的路径?

win7怎样通过DOS命令查看计算机日志文件

Linux定时器工具-crontab 各參数具体解释及怎样查看日志记录

如何查看docker日志 怎样查看docker日志

如何查看docker日志 怎样查看docker日志

Linux系统日志怎么查看