tail -f读取启动文件内容,直到读取到某字符串则跳出tail -f

正文:
启动文件:catalina.out
目标字符串:Server startup in

tail
-f一般我们会采取ctrl+C的方式跳出,但是这样会直接跳出此次脚本的执行进程,catalina.out是tomcat的启动日志,启动日志会出现一个Server
startup in * ms的语句,意味着tomcat启动成功,此时采用下面语句可以实现tail -f这个命令在获取到Server
startup in后跳出。 这样只是写一写小脚本时让启动日志输出到屏幕上,合适时机跳出,使用场景有限,仅供参考。

tail -f /home/tomcat/logs/catalina.out | sed '/Server startup in/ q'

linux-grep-tail-find 如果在只是想匹配模式的上下几行,grep可以实现。

$grep -5 ‘parttern’ inputfile //打印匹配行的前后5行

$grep -C 5 ‘parttern’ inputfile //打印匹配行的前后5行

$grep -A 5 ‘parttern’ inputfile //打印匹配行的后5行

$grep -B 5 ‘parttern’ inputfile //打印匹配行的前5行

查看mysql慢日志中ip地址为192.168.0.10发送过来的SQL语句的后面三行

tail -50 /usr/local/mysql/data/sql-slow.log |grep -3 ‘192.168.0.10’
匹配php错误日志中某一个字段

2,tail -100 /data/logs/php/php_error_5.3.log | grep
“Memcache::get()”;

查看某一个文件第5行和第10行

sed -n ‘5,10p’ filename 这样你就可以只查看文件的第5行到第10行。

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

1、tail -f filename 说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n
10),刷新显示在屏幕上。退出,按下CTRL+C。

2、tail -n 20 filename 说明:显示filename最后20行。

3、tail -r -n 10 filename 说明:逆序显示filename最后10行

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

对日志记录做多次grep过滤输出,格式如下:

tail -f log | grep xxx | grep yyy

发现grep失效,无法做正确输出。google研究了一下,原因如下:

管道 |
是全缓冲的,一般来说buffer_size为4096,有些是8192。不管具体值多少,只有buffer_size满了,才会看到输出。

在操作里 >>file 这个操作也是全缓冲的。调整如下

tail -f log | grep --line-buffer xxx | grep --line-buffer yyy

结果输出正常。

grep当带上了 --line-buffer 的时候,每输出一行,就刷新一次。

在unix里,块设备和普通文件,以及管道都是全缓冲的。

对日志分析告警和实时监控可以考虑如下形式:

tail -f $LOGF | while read var

do

case “$var” in

esac

done

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

标准unix/linux下的grep通过下面參数控制上下文

grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行

grep -B 5 foo file 显示foo及前5行

grep -A 5 foo file 显示foo及后5行

查看grep版本号的方法是

grep -V

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

grep 后面带上-A -B -C 参数可以多显示几行内容

grep -A 5 可以显示匹配内容以及后面的5行内容

grep -B 5 可以显示匹配内容以及前面的5行内容

grep -C 5 可以显示匹配内容以及前后面的5行内容

$ cat size.txt

b124230

b034325

a081016

m7187998

m7282064

a022021

a061048

m9324822

b103303

a013386

b044525

m8987131

B081016

M45678

B103303

BADc2345

$ cat size.txt | grep ‘a022021’

a022021

$ cat size.txt | grep ‘a022021’ -C 2

m7187998

m7282064

a022021

a061048

m9324822

$ cat size.txt | grep ‘a022021’ -B 2

m7187998

m7282064

a022021

$ cat size.txt | grep ‘a022021’ -A 2

a022021

a061048

m9324822

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

1.目录操作:

(1)cd (切换目录)

cd ~ 回到主目录

cd 回到主目录

cd … 回到上层目录

cd - 回到刚才的目录

cd /var/spool/mail 绝对路径

cd …/mqueue 相对路径(由/var/spool/mail 转到/var/spool/mqueue这样写)

(2)pwd (显示当前目录)

pwd 显示当前目录

pwd -P 显示当前目录(不以连接文件的数据显示,而是显示正确的完整路径)

(3)mkdir (新建一个新目录)

mkdir -p test1/test2/test3 创建多层目录

mkdir -m 777 test2 新建权限777的目录

(4)rmdir (删除一个空目录)

rmdir test 删除空文件夹test

rmdir -p test1/test2/test3 删除test1/test2/test3

2.文件与目录管理

(1)查看文件目录(ls)

ls -a 列出全部文件,包括隐藏文件

ls -A 列出全部文件,包括隐藏文件,不包括.与…两个目录

ls -d 仅列出目录本身,不包括其中文件数据

ls -l 列出长串数据,包含文件属性与权限

ls -R 按文件容量大小排序

ls -t 按时间排序

ls --color=never 不显示颜色(always显示颜色,auto自动判断)

ls --full-time 以完整时间模式输出

(2)复制、删除与移动(cp,rm,mv)

cp -a /var/log/wtmp wtmp_test 将文件所有特性复制过去

cp /var/log/wtmp . 复制到当前目录

cp -i 若目标文件存在,则覆盖时先询问操作的进行

cp -p 连同文件属性一起复制

cp -r 目录的复制

cp -d 若源文件作为连接文件的属性,则复制连接文件属性而非连接文件本身

cp -s 复制成为符号连接文件

rm -i 互动模式,删除前询问用户是否操作

rm -f 忽略不存在的文件,不会出现警告信息

rm -r 递归删除

mv -f 如果目标文件存在,不会询问而直接覆盖

mv -i 如果目标文件存在,则询问是否覆盖

mv -u 如果目标文件存在,且source比较新,则覆盖

(3)取得路径文件名与目录名称

basename /etc/systemd/network 取得最后的文件名(network)   dirname
/etc/systemd/network 取得目录名(/etc/systemd)
3.文件内容查阅 (1)直接查看文件内容   cat 由第一行开始显示内容

cat -A 完整显示,包含特殊字符

cat -b 列出行号(空白行不标行号)

cat -n 打印出行号(包括空白行)

tac 反向显示,与cat相反

nl 添加行号打印

nl -b a 打印出行号(包括空白行),类似cat -n

nl -b t 如果有空行,空的那行不列出行号

nl -n ln 行号在屏幕坐方显示

nl -n rn 行号在字段右方显示,不加0

nl -n rz 行号在字段右方显示,加0

nl -w 3 行号默认字段改为3位

(2)可翻页查看

more /etc/manpath.config
查看文件信息(空格翻页,enter键向下滚动一行,/字符串向下查询,:f立刻显示文件名及目前显示行数,b往回翻页,q离开)

less /etc/manpath.config
查看文件信息(空格/pageup上翻,pagedown下翻,/字符串向下查询,?字符串向上查询,n重复查询,N反向重复,q离开)

(3)数据选取

head -n 10 /etc/manpath.config 显示前10行(不加-n 10也是默认显示前10行)

head -n -10 /etc/manpath.config 显示前面所有行数,不包括后10行

tail -n 20 /etc/manpath.config 显示最后20行

tail -n +20 /etc/manpath.config 显示后面所有行数,不包括前20行

tail -f 持续检测行数,直到按下ctrl+c

(4)非文本文件

od -t a 默认字符输出

od -t c ASCII字符输出

od -t d 十进制输出(f浮点数,o八进制,x十六进制)

od -t oCc /etc/issue 八进制列出存储值与ASCII对照表

(5)修改文件时间或者创建新文件

touch test 新建一个新文件test

touch -a 修改访问时间

touch -c 仅修改文件时间,若文件不存在则不创建新文件

touch -m 修改mtime

touch -d “2 days ago” test test文件日期调整为两天前

touch -t 1503151820 test test文件时间调整为2015.3.15 18:20

4.默认权限与隐藏权限

umask 002 默认权限去除的是其他人权限的w权限

chattr +i test 设置test文件的隐藏属性(不能被删除、改名、写入添加数据,仅root用户可设置)

chattr +a test 设置test文件的隐藏属性(只能添加数据,不能删除、修改,仅root用户可设置)

chattr -a test 取消test文件的隐藏属性

lsattr test 显示test文件隐藏属性

file test 查看文件类型

5.命令与文件的查询

which ifconfig 找出ifconfig命令的完整文件名

whereis ifconfig 寻找ifconfig这个文件

locate ifconfig 寻找与ifconfig相关的文件

find /etc -mtime 3 3天前的一天之内改过的文件

find /etc -mtime -3 3天之内改过的文件(不包括第3天)

find /etc -mtime +3 3天之前改过的文件(不包括第3天)

find /etc -newer /etc/passwd 寻找/etc下比passwd日期新的文件并列出

find / -nouser 寻找系统中不属于任何人的文件

find /home -user root 寻找/home下属于root的文件

find /etc -name test 寻找/etc下名为test的文件

find / -size +100k 寻找系统中大于100k的文件

find / -size +100k -exec ls -l {} ; 将上面找到的文件用ls -l列出来

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值