2013-08-29 15:53:29 u011511429 阅读数 1650
Linux查看Log文件
 
1. 建立工作目录
 
  mkdir -p /usr/local/virus
  www.2cto.com  
2. 下载鸟哥写的Log分析脚本
 
  cd /usr/local/virus
 
  wget linux.vbird.org/download/vbird/logfile-0.1-4-2.tgz">http://linux.vbird.org/download/vbird/logfile-0.1-4-2.tgz
 
3. 解压缩  www.2cto.com  
 
  tar -zxvf logfile-0.1-4-2.tgz
 
  目录下会出现logfile次目录
 
4.  修改logfile.sh
 
  cd logfile
 
  chown root:root logfile.sh
 
  chmod 755 logfile.sh
 
  vi logfile.sh  www.2cto.com  
 
  修改email的值成真实email地址
 
5. 试运行logfile.sh
 
  sh logfile.sh
2019-06-05 15:54:15 weixin_43882774 阅读数 3299

1.查看日志常用命令

 

    tail:  

       -n  是显示行号;相当于nl命令;例子如下:

 

            tail -100f test.log      实时监控100行日志

 

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

 

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

 

    head:  

 

        tail是相反的,tail是看后多少行日志;例子如下:

 

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

 

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

 

    cat

 

        tac是倒序查看,是cat单词反写;例子如下:

 

            cat -n test.log |grep "debug"   查询关键字的日志

 

cat -n test.log |tail -n +92|head -n 20  选择关键字所在的中间一行. 然后查看这个关键字前10行和后10行的日志:

 

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

 

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

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 来确定日志中是否有该 时间点

  (1)使用moreless命令,

 

           如: cat -n test.log |grep "debug" |more     这样就分页打印了,通过点击空格键翻页

 

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

 

            如:cat -n test.log |grep "debug"  >debug.txt

 

2.查找

find

1.按照文件名查找

 

(1)find / -name httpd.conf #在根目录下查找文件httpd.conf,表示在整个硬盘查找

(2)find /etc -name httpd.conf #/etc目录下文件httpd.conf

(3)find /etc -name '*srm*' #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件

(4)find . -name 'srm*' #表示当前目录下查找文件名开头是字符串‘srm’的文件

 

2.按照文件特征查找     

 

(1)find / -amin -10 # 查找在系统中最后10分钟访问的文件(access time)

(2)find / -atime -2 # 查找在系统中最后48小时访问的文件

(3)find / -empty # 查找在系统中为空的文件或者文件夹

(4)find / -group cat # 查找在系统中属于 groupcat的文件

(5)find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件(modify time)

(6)find / -mtime -1 #查找在系统中最后24小时里修改过的文件

(7)find / -user fred #查找在系统中属于fred这个用户的文件

(8)find / -size +10000c #查找出大于10000000字节的文件(c:字节,w:双字,k:KBM:MBG:GB)

(9)find / -size -1000k #查找出小于1000KB的文件

 

grep

(1)grep 'test' d* #显示所有以d开头的文件中包含 test的行

(2)grep ‘test’ aa bb cc #显示在aabbcc文件中包含test的行

(3)grep ‘[a-z]\{5\}’ aa #显示所有包含每行字符串至少有5个连续小写字符的字符串的行

(4)grep magic /usr/src #显示/usr/src目录下的文件(不含子目录)包含magic的行

(5)grep -r magic /usr/src #显示/usr/src目录下的文件(包含子目录)包含magic的行

 

(6)grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’)

 

2020-01-07 20:35:38 qq_35372414 阅读数 41

Linux查看log日志,指令

grep指令

线上出bug是常有的事,尤其是分布式环境,查询log日志快速定位问题是很有必要的,grep命令就可以得到多个条件查询出来的结果,并且可以对多个文件进行查询:
1.grep的AND,多条件的与查询。

// grep的AND,多条件的与查询
grep 'condition' filename | grep 'condition'

2.grep的OR,多条件的或查询。

// grep的OR,多条件的或查询
grep 'condition|condition' filename

3.grep使用正则表达式查询。

// .grep使用正则表达式查询
grep -E 'pattern1|pattern2' filename

或者

// 使用正则表达式查询
egrep 'pattern1|pattern2' filename

vim指令

对单个log日志查询嫌麻烦,也可以使用简单的vim指令(单个文件):

vim filename //进入vim命令模式
gg //光标移到文件第一行
ctrl+G  //光标移到文件最后一行
/?condition //正向/反向条件查询
n/N //(正向:下一个/上一个;反向:上一个/下一个)
:q //离开 vim (常用)
:e //刷新文件

够用就行了,更多的指令就不介绍了,感兴趣的自己看看:https://www.runoob.com/linux/linux-vim.html

2019-07-01 15:56:55 sinat_32023305 阅读数 3230

开发基于 Docker 的应用时,用好 log 可以大大提高排错效率,下面就是几个常用的 log 操作技巧:

  • 显示所有 log
  • 显示实时 log
  • 使用 tail 查看 log 尾部
  • 使用 grep 过滤 log
  • 根据时间查看 log
  • 组合使用
  • 把日志写入文件

1. 显示所有 log

# 显示某个容器的所有log
$ docker logs [OPTIONS] <CONTAINER>

# 显示 docker-compose 启动的所有容器的log
$ docker-compose logs

2. 显示实时 log

效果和Linux的 tail-f filename 一样,可以把最新内容刷新显示到屏幕上。

$ docker logs -f <CONTAINER>

3. 使用 tail 查看 log 尾部

效果和Linux的 tail-n20filename 一样,显示最后20行的内容。

$ docker logs --tail 20 <CONTAINER>

4. 使用 grep 过滤 log

例如查找所有包含 “error” 的log:

$ docker logs | grep error

5. 根据时间查看 log

比如只想查看某个时间点之后的日志,使用 --since 选项,显示从指定时间点到最新的日志:

$ docker logs --since 2018-09-25T12:01:46.452616Z <CONTAINER>

--since指定了开始时间点,还可以指定结束时间点,使用选项 --until,显示二者之间的日志:

$ docker logs --since 2018-09-25T12:01:48.551341Z --until 2018-09-25T12:01:48.561714Z <CONTAINER>

6. 组合使用

这些选项都可以放在一起使用,例如:

$ docker logs --tail 10 <CONTAINER> | grep info

$ docker logs -f --since xxx --tail=10 <CONTAINER>

7. 把日志写入文件

把 error 日志都写到指定文件:

$ docker logs -t <CONTAINER> | grep error >> logs_error.txt

可以写一个脚本把感兴趣的内容写入文件,进一步还可以导入我们的日志系统,方便查看。

 

Linux查找日志

1、查询关键字前后30行
cat 日志文件名.log | grep -30 ‘关键字’
例:
cat mcs-all.log | grep -30 ‘2019-04-08 13:30:04,271’
2、查询两个关键字同时出现
cat 日志文件名.log | grep ‘关键字1’ | grep ‘关键字2’
例:
cat mcs-all.log | grep ‘ServiceV5Impl’ | grep ‘客户姓名不能为空’
3、压缩以后的文件查询
gzip -dc 文件名 | grep -30 “关键字”
例:
gzip -dc mcs-all.log_2019-04-04.gz | grep -30 ‘2019-04-04 17:38:26,036’
4、查询中所匹配模式的最后一项
cat 文件名 | grep ‘关键字’ | tail -n
例子:
cat mcs-all.log_2019-04-09 | grep ‘客户姓名不能为空’ | tail -1
cat mcs-all.log_2019-04-09 | grep ‘客户姓名不能为空’ | tail -100

2012-10-09 09:25:14 mowengaoboa 阅读数 95

最近经常查看服务器上的log文件,有时log文件太大查起来很不方便,看了看网上说可以部分查询,就先记录一下吧
Linux中查看部分文件内容命令head,tail,sed的用法:
Linux中的查看文件内容最常用的cat,less,more和vim我们都已经很熟悉了,但是这些命令都是查看文件的全部内容,如果要查看文件的部分内容可以使用head,tail或sed,下面对这几个命令的用法做一个简单的介绍:
1. 查看文件的前几行,可以使用head命令,如:
head -10 /etc/passwd
2. 查看文件的后几行,可以使用tail命令,如:
tail -10 /etc/passwd
tail -f /var/log/messages
参数-f使tail不停地去读最新的内容,这样有实时监视的效果,当你在ppp拨号的过程中用它岂不是很方便!
3. 查看文件中间一段,你可以使用sed命令,如:
sed -n '5,10p' /etc/passwd
这样你就可以只查看文件的第5行到第10行。

现在处理的数据量很大,打开文件的时间太长,不打开文件,直接用:
wc -l filename
可以数出文件的行数

1.作用
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

2.格式
grep [options]

3.主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。

4.grep命令使用简单实例
$ grep ‘test’ d*
显示所有以d开头的文件中包含 test的行。
$ grep ‘test’ aa bb cc
显示在aa,bb,cc文件中匹配test的行。
$ grep ‘[a-z]\{5\}’ aa
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
$ grep ‘w\(es\)t.*\1′ aa
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着 另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了。

5.grep命令使用复杂实例
假设您正在’/usr/src/Linux/Doc’目录下搜索带字符 串’magic’的文件:
$ grep magic /usr/src/Linux/Doc/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
其中文件’sysrp.txt’包含该字符串,讨论的是 SysRQ 的功能。
默认情况下,’grep’只搜索当前目录。如果 此目录下有许多子目录,’grep’会以如下形式列出:
grep: sound: Is a directory
这可能会使’grep’ 的输出难于阅读。这里有两种解决的办法:
明确要求搜索子目录:grep -r
或忽略子目录:grep -d skip
如果有很多 输出时,您可以通过管道将其转到’less’上阅读:
$ grep magic /usr/src/Linux/Documentation/* | less
这样,您就可以更方便地阅读。

有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,’grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 <CTRL c> ,然后再试。

下面还有一些有意思的命令行参数:
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。

grep -n pattern files  即可显示行号信息

grep -c pattern files  即可查找总行数

这里还有些用于搜索的特殊符号:
\< 和 \> 分别标注单词的开始与结尾。
例如:
grep man * 会匹配 ‘Batman’、’manic’、’man’等,
grep ‘\<man’ * 匹配’manic’和’man’,但不是’Batman’,
grep ‘\<man\>’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
‘^’:指匹配的字符串在行首,
‘$’:指匹配的字符串在行 尾,

Grep 命令 用法大全

1、 参数:
-I :忽略大小写
-c :打印匹配的行数
-l :从多个文件中查找包含匹配项
-v :查找不包含匹配项的行
-n:打印包含匹配项的行和行标

2、RE(正则表达式)
\ 忽略正则表达式中特殊字符的原有含义
^ 匹配正则表达式的开始行
$ 匹配正则表达式的结束行
\< 从匹配正则表达式的行开始
\> 到匹配正则表达式的行结束
[ ] 单个字符;如[A] 即A符合要求
[ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的单个字符
* 所有字符,长度可以为0

3、举例
# ps -ef | grep in.telnetd
root 19955 181 0 13:43:53 ? 0:00 in.telnetd

# more size.txt size文件的内容
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345

# more size.txt | grep '[a-b]' 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
b124230
b034325
a081016
a022021
a061048
b103303
a013386
b044525
# more size.txt | grep '[a-b]'*
b124230
b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
b103303
a013386
b044525
m8987131
B081016
M45678
B103303
BADc2345

# more size.txt | grep 'b' 单个字符;如[A] 即A符合要求
b124230
b034325
b103303
b044525
# more size.txt | grep '[bB]'
b124230
b034325
b103303
b044525
B081016
B103303
BADc2345

# grep 'root' /etc/group
root::0:root
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,tty,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
daemon::12:root,daemon

# grep '^root' /etc/group 匹配正则表达式的开始行
root::0:root

# grep 'uucp' /etc/group
uucp::5:root,uucp
nuucp::9:root,nuucp

# grep '\<uucp' /etc/group
uucp::5:root,uucp

# grep 'root$' /etc/group 匹配正则表达式的结束行
root::0:root
mail::6:root

# more size.txt | grep -i 'b1..*3' -i :忽略大小写

b124230
b103303
B103303

# more size.txt | grep -iv 'b1..*3' -v :查找不包含匹配项的行

b034325
a081016
m7187998
m7282064
a022021
a061048
m9324822
a013386
b044525
m8987131
B081016
M45678
BADc2345

# more size.txt | grep -in 'b1..*3'
1:b124230
9:b103303
15:B103303

# grep '$' /etc/init.d/nfs.server | wc -l
128
# grep '\$' /etc/init.d/nfs.server | wc –l 忽略正则表达式中特殊字符的原有含义

15
# grep '\$' /etc/init.d/nfs.server
case "$1" in
>/tmp/sharetab.$$
[ "x$fstype" != xnfs ] &&
echo "$path\t$res\t$fstype\t$opts\t$desc"
>>/tmp/sharetab.$$
/usr/bin/touch -r /etc/dfs/sharetab /tmp/sharetab.$$
/usr/bin/mv -f /tmp/sharetab.$$ /etc/dfs/sharetab
if [ -f /etc/dfs/dfstab ] && /usr/bin/egrep -v '^[ ]*(#|$)'
if [ $startnfsd -eq 0 -a -f /etc/rmmount.conf ] &&
if [ $startnfsd -ne 0 ]; then
elif [ ! -n "$_INIT_RUN_LEVEL" ]; then
while [ $wtime -gt 0 ]; do
wtime=`expr $wtime - 1`
if [ $wtime -eq 0 ]; then
echo "Usage: $0 { start | stop }"

# more size.txt

the test file
their are files
The end

# grep 'the' size.txt
the test file
their are files

# grep '\<the' size.txt
the test file
their are files

# grep 'the\>' size.txt
the test file

# grep '\<the\>' size.txt
the test file

# grep '\<[Tt]he\>' size.txt
the test file

==================================================================

1,简介
使用正则表达式的一个多用途文本搜索工具.这个php?name=����" onclick="tagshow(event)" class="t_tag">命令本来是ed行编辑器中的一个php?name=����" onclick="tagshow(event)" class="t_tag">命令/过滤器:
        g/re/p -- global - regular expression - print.
基本格式
grep pattern [file...]
(1)grep 搜索字符串 [filename]
(2)grep 正则表达式 [filename]
在文件中搜索所有 pattern 出现的位置, pattern 既可以是要搜索的字符串,也可以是一个正则表达式.
注意:在输入要搜索的字符串时最好使用双引号/而在模式匹配使用正则表达式时,注意使用单引号

2,grep的选项
    -c 只输出匹配行的计数
    -i 不区分大小写(用于单字符)
    -n 显示匹配的行号
    -v 不显示不包含匹配文本的所以有行
    -s 不显示错误信息
    -E 使用扩展正则表达式
    更多的选项请查看:man grep

3,常用grep实例

(1)多个文件查询
    grep "sort" *.doc       #见文件名的匹配

(2)行匹配:输出匹配行的计数
    grep -c "48" data.doc   #输出文档中含有48字符的行数

(3)显示匹配行和行数
    grep -n "48" data.doc       #显示所有匹配48的行和行号

(4)显示非匹配的行
    grep -vn "48" data.doc      #输出所有不包含48的行

(4)显示非匹配的行
    grep -vn "48" data.doc      #输出所有不包含48的行

(5)大小写敏感
    grep -i "ab" data.doc       #输出所有含有ab或Ab的字符串的行

4, 正则表达式的应用

(1)正则表达式的应用 (注意:最好把正则表达式用单引号括起来)
    grep '[239].' data.doc      #输出所有含有以2,3或9开头的,并且是两个数字的行

(2)不匹配测试
    grep '^[^48]' data.doc      #不匹配行首是48的行

(3)使用扩展模式匹配
    grep -E '219|216' data.doc

(4) ...
    这需要在实践中不断应用和总结,熟练掌握正则表达式。

5, 使用类名
可以使用国际模式匹配的类名:
[[:upper:]]   [A-Z]
[[:lower:]]   [a-z]
[[:digit:]]   [0-9]
[[:alnum:]]   [0-9a-zA-Z]
[[:space:]]   空格或tab
[[:alpha:]]   [a-zA-Z]

(1)使用
    grep '5[[:upper:]][[:upper:]]' data.doc     #查询以5开头以两个大写字母结尾的行

Linux 查看log文件

阅读数 1626

linux log拆分

阅读数 1637

linux log拆分

博文 来自: hellochenlian

linux查看log软件

阅读数 11

没有更多推荐了,返回首页