linux查看日志的命令是什么

上周 用tail看日志特别方便。

tail -n 1 0 test.log 看最后1 0行。

tail -f test.log 实时更新。

tail -f -n 1 00 test.log 看最后1 00行,一直更新。

搭配grep过滤。
tail -f test.log | grep 'error' 只看有error的行。

head命令相反。
head -n 1 0 test.log 看前1 0行。

head -n -1 0 test.log 看除了最后1 0行以外的所有行。

cat命令看整个文件。
cat -n test.log | grep 'error' 看所有行,带行号,找到error。

cat -C 5 test.log | grep 'error' 找到error,前后各看5 行。

more命令分页看。
more /var/log/messages 快速看大文件。

空格键翻页。
Enter键看一行。
q退出。

sed命令按行号。
sed -n '5 ,1 0p' test.log 看第5 到1 0行。

sed -n '/2 02 4 -01 -01 00:00:00/,/2 02 4 -01 -01 01 :00:00/p' test.log 看指定时间段的日志。

less命令更好用。
less /var/log/syslog 前后翻页,还能搜。

/keyword 向下搜。

?keyword 向上搜。

n/N 下一个/上一个。

q退出。

文件路径很重要。
/var/log/messages 系统全局日志。

/var/log/secure 安全日志,SSH记录。

/var/log/cron 定时任务记录。

/var/log/maillog 邮件日志。

实际用用就知道了。
实时看用tail -f。
找关键字用grep配合cat或less。
大文件用more或less。

算了。

工作笔记(三十一)——linux分割较大的日志文件,查看日志

哎哟喂,这Linux日志处理方法写得也太全了吧!上周有个客人问我怎么快速看几百G的日志,我直接把这套方法甩给他,还真帮了大忙。

先说split命令,这个用得超多。
我上次在2 02 3 年深圳那边调试一个系统崩溃问题,日志直接有3 G,直接用split -l 2 0000 crash.log small_分成了几十个小文件,每次打开终端cat small_aa看一个,比全打开快不是一点半点。
记得加--verbose啊,不然分着分着就忘了进度,浪费时间。

按大小分割那个-b参数也很有用。
上次在上海数据中心,有个监控日志老爆硬盘,我就用split -b 5 0M monitor.log small_,每次就占5 0M,系统压力小多了。
不过要注意,按大小分的时候,最后一个文件可能不满5 0M,这点得知道。

最绝的是用tail直接看最新的。
我之前在杭州搞一个电商系统,半夜程序出Bug,直接tail -f error.log挂着,新报的错误一行一行弹出来,根本不用等日志滚到底。
不过这方法有个坑,终端关了就没记录了,最好重定向到文件或者用screen挂起来。

grep过滤那个技巧我经常用。
比如公司去年在青岛搞的项目,日志里全是中文夹杂英文,直接用grep "ERROR" production.log | split -l 5 00 error_split_,只拿报错的部分分文件,分析问题快多了。
记得引号不能少,我之前手一抖写成grep "ERROR,结果匹配全乱了。

不过啊,用的时候得注意几点。
我之前在北京测试一个脚本,忘了检查磁盘空间,结果分到一半没地放了,日志还卡在那儿了,急得我头冒汗。
还有命名前缀千万别重复,上次在成都弄测试环境,没注意用了small_,结果把生产日志也给分了,差点酿大错。
最烦的是权限问题,我在广州服务过一个系统,权限不够,split的时候直接报错,折腾半天才发现是sudo忘了加。

反正你看,这套方法用好了,处理日志那叫一个快。
具体怎么用就看情况了,全量看就用split,想看最新动态就用tail,要找问题就用grep过滤再分。
不过啊,具体用哪个,你看着办吧。

Linux系统查看log日志命令详解!

Linux系统看日志啊,这玩意儿太重要了。
平时捣鼓服务器,没日没夜盯着日志看。

tail命令 这个命令贼好用,看日志最后几行。
默认就显示1 0行,不想看那么多咋办?用-n后面加数字,比如tail -n 2 0 /var/log/syslog,就显示最后2 0行。
-f这个选项更神,实时监控日志,文件有更新就立马看到。
比如tail -f /var/log/nginx/error.log,搞个Nginx错误日志,出问题立马知道。
想停了按Ctrl+C就行。

head命令 这个跟tail反着来,看文件开头。
默认也是1 0行,不想看那么多也一样,head -n 1 5 /var/log/auth.log,就显示前1 5 行。
旧日志啊,什么认证日志啊,常用这个。

cat命令 这个命令一次性把整个文件都打出来。
不过别用在大文件上,终端卡死不说,电脑也可能卡。
比如cat /var/log/dmesg,看内核启动日志啥的,文件小就没事。
大文件看不懂,得配合less或者grep用。

grep命令 这个命令太强了,找特定内容的行。
比如grep -i "failed" /var/log/syslog,搜索"failed",-i是忽略大小写。
grep -n "4 04 " /var/log/nginx/access.log,显示"4 04 "的行号。
grep -r "timeout" /var/log/,在/var/log下所有文件里找"timeout",递归搜索。

less命令 这个适合大文件,分页看。
用方向键翻页,或者PageUp/PageDown。
想搜东西,按/,输入关键词,按n跳到下一个匹配。
按q退出。
比如less /var/log/apache2 /error.log,看Apache错误日志,慢慢看。

其他命令 journalctl这个在Systemd系统上用,看系统日志。
得有root权限,journalctl -u nginx.service --no-pager -n 5 0,看Nginx服务最近5 0条日志。
awk/sed更高级,提取特定列或者改内容。
比如awk '{print $1 , $3 }' /var/log/auth.log,输出第1 和第3 列。

咋用? 实时看日志,tail -f 快速定位错误,grep "error" /var/log/syslog 分析大文件,用less或者grep过滤后看 系统服务日志,journalctl优先用
组合着用,效率贼高。
说实话,刚开始用的时候我也没想明白,慢慢试,慢慢就熟了。