linux查询日志命令
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于linux查询日志命令内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在linux查询日志命令相关知识领域提供全面立体的资料补充。同时还包含 labelfor、label标签、lambda 的知识内容,欢迎查阅!
linux查询日志命令相关知识
-
linux查询日志命令总结【背景】 排查线上环境问题,少不了去线上查日志。而使用什么命令,能快速准确地查到我们需要查找地日志信息,也是我们需要掌握的一项技能。 【命令】 Linux查看命令有多种:tail,head,cat,tac,more (一) tail 命令 tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ] 参数: 1)-f 循环读取 2)-q 不显示处理信息 3)-v 显示详细的处理信息 4)-c Number 从 Number 字节位置读取指定文件 5)-n Number 从
-
【赵渝强老师】Redis的慢查询日志Redis慢查询日志帮助开发和运维人员定位系统存在的慢操作。慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(慢查询ID,发生时间戳,耗时,命令的详细信息)记录下来。Redis客户端一条命令分为如下四部分执行:需要注意的是,慢查询日志只是统计步骤3)执行命令的时间,所以慢查询并不代表客户端没有超时问题。需要注意的是,慢查询日志只是统计步骤3)执行命令的时间,所以慢查询并不代表客户端没有超时问题。一、慢查询的配置参数:慢查询的预设阀值 slowlog-log-slower-thanslowlog-log-slower-than参数就是预设阀值,单位是微秒,默认值是10000,如果一条命令的执行时间超过10000微妙,那么它将被记录在慢查询日志中。 如果slowlog-log-slower-than的值是0,则会记录所有命令。 如果slowlog-log-slower-than的值小于0,则任何命令都不会记录日志。慢查询日志的长度slowlog-max-lensl
-
Linux用户登录记录日志和相关查看命令汇总(转)Linux用户登录记录日志和相关查看命令汇总(转) # 1 utmp、wtmp、btmp文件Linux用户登录信息放在三个文件中:1 /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间;2 /var/log/wtmp:记录当前正在登录和历史登录系统的用户信息,默认由last命令查看;3 /var/log/btmp:记录失败的登录尝试信息,默认由lastb命令查看。这三个文件都是二进制数据文件,并且三个文件结构完全相同,是由/usr/include/bits/utmp.h文件定义了这三个文件的结构体。默认情况下文件的日志信息会通过logrotate日志管理工具定期清理。logrotate的配置文件是/etc/logrotate.conf,此处是logrotate的缺省设置,通常不需要对它进行修改。日志文件的轮循压缩等设置存放在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下,它会覆盖缺省设置。如果不
-
我试了试用 SQL查 Linux日志,好用到飞起大家好,我是小富~ 最近发现点好玩的工具,迫不及待的想跟大家分享一下。 大家平时都怎么查Linux日志呢? 像我平时会用tail、head、cat、sed、more、less这些经典系统命令,或者awk这类三方数据过滤工具,配合起来查询效率很高。但在使用过程中有一点让我比较头疼,那就是命令参数规则太多了,记的人脑壳疼。 那查日志有没有一种通用的方式,比如用SQL查询,毕竟这是程序员都比较熟悉的表达式。 今天分享的工具q,就实现了以写SQL的方式来查询、统计文本内容,一起看看这货到底有什么神奇之
linux查询日志命令相关课程
linux查询日志命令相关教程
- Linux 日志文件系统 前小节介绍了早期的 Linux 文件系统,本小节介绍 Linux 日志文件系统,日志文件系统是给 Linux 操作系统增加了一些安全相关能力,日志文件系统和早期的文件系统相比,它并不是先把数据写到中间存储设备,然后再写到存储设备索引节点的,而是先把数据写道临时生成的文件中(称为日志),然后数据成功同步到存储设备和索引节点表,再删除对应的日志数据。本小节介绍 Linux 常见的日志文件系统。
- 1.1 日志文件 重要日志模块:二进制日志-binlog二进制日志,其实就是我们平常所说的 binlog,它是 MySQL 重要的日志模块,在 Server 层实现。binlog 以二进制形式,将所有修改数据的 query 记录到日志文件中,包括 query 语句、执行时间、相关事务信息等。binlog 的开启,通过在配置文件 my.cnf 中,显式指定参数 log-bin=file_name。如果未指定 file_name,则会记录为 mysql-bin.******(* 代表 0~9 之间的某个数字,表示日志的序号)log-bin = /mysql/log/mysql-bin # binlog的存储路径下面为一条insert语句所生成的binlog内容:root@localhost [tempdb]>insert into a values(1);Query OK, 1 row affected (0.00 sec)[root@mysql-test-1 log]# mysqlbinlog --base64-output=decode-rows -vv mysql-bin.000017#200413 0:18:17 server id 1873306 end_log_pos 556 Write_rows: table id 280 flags: STMT_END_F### INSERT INTO `tempdb`.`a`### SET### @1=1 /* INT meta=0 nullable=1 is_null=0 */# at 556#200413 0:18:17 server id 1873306 end_log_pos 583 Xid = 4713735COMMIT/*!*/;重要日志模块:InnoDB redo logredo log,是存储引擎 InnoDB 生成的日志,主要为了保证数据的可靠性。redo log 记录了 InnoDB 所做的所有物理变更和事务信息。redo log 默认存放在数据目录下面,可以通过修改 innodb_log_file_size 和 innodb_log_files_in_group 来配置 redo log 的文件数量和每个日志文件的大小。innodb_log_file_size = 1000M # 每个redo log文件的大小innodb_log_files_in_group = 3 # redo log文件数量错误日志:error log错误日志,记录 MySQL 每次启动关闭的详细信息,以及运行过程中比较严重的警告和错误信息。错误日志默认是关闭的,可以通过配置参数 log-error 进行开启,以及指定存储路径。log-error = /mysql/log/mysql-error.log # 错误日志的存储路径1.1.4 慢查询日志:slow query log慢查询日志,记录 MySQL 中执行时间较长的 query,包括执行时间、执行时长、执行用户、主机等信息。慢查询日志默认是关闭的,可以通过配置 slow_query_log 进行开启。慢查询的阈值和存储路径,通过配置参数 long_query_time 和 slow_query_log_file 实现。slow_query_log = 1 #开启慢查询long_query_time = 1 #设置慢查询阈值为1sslow_query_log_file = /mysql/log/mysql-slow.log #设置慢查询日志存储路径1.1.5 一般查询日志:general query log一般查询日志,记录 MySQL 中所有的 query。慢查询记录的是超过阈值的 query,而一般查询日志记录的是所有的 query。一般查询日志的开启需要慎重,因为开启后对 MySQL 的性能有比较大的影响。一般查询日志默认是关闭的,可以通过配置参数 general_log 进行开启。存储路径可以通过配置参数 general_log_file 来实现general_log = OFF #默认是关闭的general_log_file = /mysql/data/mysql-general.log #设置查询日志存储路径
- 1.6 查看容器日志 Docker 提供 docker logs 命令,导出容器的日志信息:docker logs busybox
- 2. 日志相关指令说明 在 ngx_http_log_module 模块中,只3个指令,分别是 access_log、log_format 和 open_log_file_cache。这些指令具体的格式如下:Syntax: access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];access_log off;Default: access_log logs/access.log combined;Context: http, server, location, if in location, limit_exceptSyntax: log_format name [escape=default|json|none] string ...;Default: log_format combined "...";Context: httpSyntax: open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];open_log_file_cache off;Default: open_log_file_cache off;Context: http, server, locationngx_http_log_module 模块用来按某个格式来记录请求的日志。模块中的 log_format 指令就是用来设置打印日志的格式,该指令中可以使用 Nginx 中的各种变量,比如保存远端ip地址的变量$remote_addr等。一个简单的示例如下:log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';接下来是 access_log 指令。参考前面的指令格式。关闭日志记录,直接是写access_log off,如果打开 access 日志,它的写法是:access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];path 是指定日志的写入路径,默认写入 logs/access.log 文件中。注意日志路径可以包变量,但是会一些限制。format 就是指定打的日志格式,也就是前面 log_format 指令定义好的格式。每个格式会设置一个格式名,这里取对应的格式名称,默认使用预定义的combined。buffer 用来指定日志写入时的缓存大小。默认是64k。gzip 日志写入前先进行压缩。压缩率可以指定,从1到9数值越大压缩比越高,同时压缩的速度也越慢。默认是1。flush 设置缓存的有效时间。如果超过flush指定的时间,缓存中的内容将被清空。if 条件判断。如果指定的条件计算为0或空字符串,那么该请求不会写入日志。access_log 指令示例:# 确保 Nginx 源码编译时安装了zlib库access_log /path/to/log.gz combined gzip flush=5m;map $status $loggable { ~^[23] 0; default 1;}# if条件判断, 如果请求的相应码是2xx或者3xx,那么$loggable变量为0,这样请求日志不会被打印access_log /path/to/access.log main if=$loggable;每一条日志记录的写入都是先打开文件再写入记录,然后关闭日志文件。如果你的日志文件路径中使用了变量,如access_log /var/logs/$host/access.log,为提高性能,可以使用 open_log_file_cache 指令设置日志文件描述符的缓存。可以通过open_log_file_cache off关闭该缓存。该指令的几个参数选项说明如下:max: 设置缓存中最多容纳的文件描述符数量,如果被占满,采用LRU算法将描述符关闭。inactive: 设置缓存存活时间,默认是10s。min_uses: 在inactive时间段内,日志文件最少使用几次,该日志文件描述符记入缓存,默认是1次。valid: 设置多久对日志文件名进行检查,看是否发生变化,默认是60s。open_log_file_cache max=100 inactive=15s valid=1m min_uses=2;最后 error_log 是 错误日志配置指令,主要记录客户端访问 Nginx 出错时的日志,它不不支持自定义日志格式。通过检查错误日志,可以快速定位线上问题,所以也是很重要的。关闭错误日志的方式和 access_log不一样,没有error_log off这样关错误日志的用法,反而会将错误日志打到名为 off 的文件中。常用的关闭方式是:error_log /dev/null; 就像在 Linux 系统中,输出到 /dev/null 的内容实际上等价于丢弃一样。
- 2. 过滤 Gradel 日志 我们日常开发过中编译时,在控制台看到的日志并不是所有的编译日志。我们看到的日志是 LIFECYCLE 级别及级别在它之上所有日志信息。我们执行gradle asR命令打 Release 包的日志,如下所示:如果我们编译时要过滤日志,我们就需要在执行命令的时候在 gradle 后面加上不同的选项,具体如下表所示: 命令 输出日志的级别 没有任何 输出 LIFECYCLE 及更高 -q 输出 QUIET 及更高 -i 输出 INFO 及更高 -d 输出 DEBUG 及更高
- 3. Nginx 日志切割 Nginx 的日志切割实现的核心是使用 nginx 命令的 reopen 参数实现,该参数的含义是重新开始记录日志文件。人工切的做法就是凌晨将日志备份,然后执行带reopen参数的命令:# 备份相关的日志[root@server sbin] mv ../logs/access.log ../logs/bak/access-2020-02-04.log[root@server sbin] mv ../logs/error.log ../logs/bak/error-2020-02-04.log[root@server sbin] ./nginx -s reopen执行后会重新生成 access.log 和 error.log,这就是手工切割的方式。通常我们会用 shell 脚本和定时任务来帮我我们完成自动切割。首先准备如下的 shell 脚本,它完成日志的备份以及给 nginx 进程发生 reopen 信号。#!/binbashNGX_DIR=/root/nginxNGX_LOG_PATH=$NGX_DIR/logsNGX_LGO_BAK_PATH=/var/log/ngx_log_bakYESTERDAY=$(date -d "yesterday" +%Y-%m-%d)mv ${NGX_LOG_PATH}/access.log ${NGX_LGO_BAK_PATH}/access-${YESTERDAY}.logmv ${NGX_LOG_PATH}/error.log ${NGX_LGO_BAK_PATH}/error-${YESTERDAY}.log# 想 Nginx 主进程发生 USR1 信号,等价于 -s reopen 选项,重新打开日志文件kill -USR1 ${NGX_DIR}/log/nginx.pid接下来,只要将这个脚本加入到 crontab 中即可,如下操作:$ crontab -e# 上面打开的页面中输入如下行:0 0 * * * /root/nginx/nginx_log_rotate.sh# 查看定时任务$ crontab -l0 0 * * * /root/nginx/nginx_log_rotate.sh
linux查询日志命令相关搜索
-
label
labelfor
label标签
lambda
lambda表达式
lamda
lang
last
latin
latin1
layers
layui
leave
left
leftarrow
legend
length
lengths
length函数
less