Ø 常用的查看日志命令
(more,less,tail,grep,find…)
Ø 几个典型例子
• grep "email=\"123@" message.log | grep body | grep -v error (查找message.log中包括email="123@和body,不包括error的内容)
• tail -100f test.log | grep "login"
• find ./ -type f -name "*.log" | xargs grep "login" -l (后面加-l后列出符合条件的文件,不加-l时打印出符合grep的内容)
• sed -n '10,15p' test.log > sed.log (取test.log的第10到15行,重定向到sed.log)
• grep login -A 10 -B 5 test.log | less (-A 10 –B 5是指显示匹配行的前5行和后10行)
• now="11:00:00";old_time="09:00:00";tac test.log |awk -v now="$now" -v old_time="$old_time" '$2>old_time && $2<now {print }' |egrep "注册" | wc –l
1、grep
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。
grep常用用法
[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 -c :计算找到 '搜寻字符串' 的次数 -i :忽略大小写的不同,所以大小写视为相同 -n :顺便输出行号 -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行! --color=auto :可以将找到的关键词部分加上颜色的显示喔!
EG : grep \"=\\\"abc@\" TEST.log | grep message | grep -v state
grep login -A 10 -B 5 hm_core.log | less
-A 10 –B 5是指显示匹配行的前5行和后10行(after、before)
2、tail
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.
命令格式:
tail [必要参数] [选择参数] [文件]
命令功能
用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件
命令参数
命令 | 描述 | 命令 | 描述 |
-n <行数> | 显示行数 | -c<数目> | 显示的字节数 |
-f | 循环读取 | -q | 不显示处理信息 |
-v | 显示详细的处理信息 |
|
|
示例如下:
tail example.txt 显示文件 example.txt 的后十行内容;
tail -n 20 example.txt 显示文件 example.txt 的后二十行内容;
tail -f example.txt 显示文件 example.txt 的后十行内容并在文件内容增加后,自动显示新增的文件内容。
tail -50f example.txt 显示文件 example.txt 的后50行内容并在文件内容增加后,自动显示新增的文件内容。
注意:
最后一条命令非常有用,尤其在监控日志文件时,可以在屏幕上一直显示新增的日志信息。
3、less
命令格式:less [参数] 文件
命令功能:less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
查看日志常用命令:less -f test.log
命令 | 描述 | 命令 | 描述 |
-b <缓冲区大小> | 设置缓冲区的大小 | -e | 当文件显示结束后,自动离开 |
-f | 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 | -g | 只标志最后搜索的关键词 |
-i | 忽略搜索时的大小写 | -m | 显示类似more命令的百分比 |
-N | 显示每行的行号 | -o <文件名> | 将less输出的内容在指定文件夹中保存起来 |
-Q | 不使用警告音 | -s | 显示连续空行为一行 |
-S | 行过长时间将超出部分舍弃 | -x <数字> | 将“tab”键显示为规定的数字空格 |
/字符串 | 向下搜索“字符串”的功能 | ?字符串 | 向上搜索“字符串”的功能 |
n | 重复前一个搜索(与/ 或 ? 有关) | N | 反向重复前一个搜索(与/ 或 ? 有关) |
b | 向后翻一页 | d | 向后翻半页 |
h | 显示帮助界面 | Q | 退出less命令 |
u | 向前滚动半页 | y | 向前滚动一页 |
空格键 | 滚动一页 | 回车键 | 滚动一页 |
[pagedown] | 向下翻动一页 | [pageup] | 向上翻动一页 |
4、find
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
#-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
====================================================
-name filename #查找名为filename的文件
-perm #按执行权限来查找
-user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查GIN: 0px">
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio %; #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune #忽略某个目录
=====================================================
5、more
more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。
命令参数
命令 | 描述 |
+n | 从第n行开始显示 |
-n | 定义屏幕大小为n行 |
+/pattern | 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示 |
-c | 从顶部清屏,然后显示 |
-d | 提示“Press space to continue, ‘q’ to quit (按空格键继续,按q键退出)”,禁用响铃功能 |
-l | 忽略Ctrl+l (换页)字符 |
-p | 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似 |
-s | 把连续的多个空行显示为一行 |
-u | 把文件内容中的下划线去掉 |
常用操作命令
命令 | 描述 | 命令 | 描述 |
Enter | 向下n行,需要定义,默认为1 | Ctrl+F | 向下滚动一屏 |
空格键 | 向下滚动一屏 | Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 | : f | 输出文件名和当前行的行号 |
V | 调用vi编辑器 | !命令 | 调用Shell,并执行命令 |
q | 退出more |
|
|
实例
命令 | 描述 |
more +3 example.log | 显示文件中从第三行起的内容 |
more +/day3 example.log | 从文件中查找第一个出现"day3"字符串的行,并从该处前两行开始显示输出 |
more -5 example.log | 设定每屏显示行数 |
ls –l | more -5 | 列一个目录下的文件,由于内容太多,我们应该学会用more来分页。和管道|结合使用 |
6、cat
主要有三大功能:
a.一次显示整个文件:cat filename
b.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件
c.将几个文件合并为一个文件:cat file1 file2 > file
********备注*******
file的内容按file1、file2的顺序全部内容,不会去重file1和file2的相同内容
EG: cat -n 12345.log >log2013.log (-n为加上行号)
7、sed
简介
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
sed使用参数
[root@www ~]# sed [-nefr] [动作] 选项与参数: -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e :直接在命令列模式上进行 sed 的动作编辑; -f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作; -r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法) -i :直接修改读取的文件内容,而不是输出到终端。 动作说明: [n1[,n2]]function n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』 function: a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行! d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚; i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~ s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
**************备注***************
1、sed不能编辑空文件 (所以不要用touch新建文件,用echo "">aa.txt来创建文件,再用sed对aa.txt操作)
2、sed不能直接将修改重定向给自己或是通过中间文件重定向给自己,如sed '1i hello' aa.txt > aa.txt 和sed '1i hello' aa.txt > bb.txt > aa.txt ,aa.txt和bb.txt都为空
正确方式:sed '1i hello' aa.txt > bb.txt && mv -f bb.txt aa.txt
8、WC
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
这个命令的功能也很好记,因为它功能很有限:
wc -c filename:显示一个文件的字节数
wc -m filename:显示一个文件的字符数
wc -l filename:显示一个文件的行数
wc -L filename:显示一个文件中的最长行的长度
wc -w filename:显示一个文件的字数