[答案来自此链接:]()
1.tail
tail-f
首先就是tail-f,tail命令是实时显示日志文件的最常用解决方案,加上-f参数可以实时拉取日志最新的更新:
tail-f/var/log/access.log
同时,默认是查看最后10行,可以加上行数降低查看的最后的行数,比如查看最后100行:
tail-00f/var/log/access.log
但是linux系统日志文件,tail可以使用匹配符匹配多个文件,比如:
tail-100f/var/log/access*.log
假如你的日志会滚动,这么可以使用-F参数,这样会在文件滚动以后追踪新文件,而不是老的文件。
tail-F/var/log/access.log。
底层原理是:
tail.c
/*TailN_FILESfilesforever,oruntilkilled.
ThepertinentinformationforeachfileisstoredinanentryofF.
Loopovereachofthem,doinganfstattoseeiftheyhavechangedsize,
andanoccasionalopen/fstattoseeifanydev/inopairhaschanged.
Ifnoneofthemhavechangedsizeinoneiteration,sleepfora
whileandtryagain.Continueuntiltheuserinterruptsus.*/
staticvoidtail_forever(structFile_spec*f,size_tn_files,doublesleep_interval)
简而言之就是先将匹配到的文件加入到链表中,定时遍历这个字段,借助fstat函数检测每位文件的大小变化,假如有变化,就读取先前记录的大小到当前记录的大小的文件内容linux学习论坛,并输出。注意,假若文件变化的越快(并且也不用太害怕linux操作系统好吗,硬碟写入没这么快,不可能超过显存写入速率),占用的显存越多。
2.less命令
less命令以后键入Shift+Flinux系统日志文件,这样可以实时追踪最新更新。并且,这样会把文件内容的大部份载入显存中,假如日志文件很大,会吞掉好多显存,不推荐这些做法。
***