生产环境日志查看方式总结

命令 cat tail less head tac grep more sed vim 常用方式 实时查看最新日志 1 tail -f info.log 使用vim查看日志 小文件可以使用vim打开, 大文件打开会十分消耗内存. 不建议使用vim打开大文件. 先使用du 命令查看文件大小 小文件使用vim查看 1 2 3 4 [root@monitor-4723 umc-job]# du -h info.log 5.7M info.log [root@monitor-4723 umc-job]# vim info.log 查看某一时间段的日志 通过sed命令可以找出某一时间段的日志 筛选 时间为16:10:01 - 16:10:59 的日志. 1 sed -n '/2019-05-30 16:10:01/,/2019-05-30 16:10:59/p' info.log 筛选日志 grep 显示info.log文件里匹配rabbitMq那行以及上下5行 1 cat info.log | grep -C 5 'rabbitMq' 显示info.log文件里匹配rabbitMq那行以及上5行 1 cat info.log | grep -B 5 'rabbitMq' 显示info....

May 30, 2019 · 1 min · BlackChen

MySQL Explain

Explain 输出中的行,以MySQL实际执行的查询部分顺序出现,而这个顺序,不总是与其在原始SQL中的一致 1 2 3 4 5 +----+-------------+---------+-------+---------------+---------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+---------+-------+---------------+---------+---------+------+------+-------------+ | 1 | SIMPLE | t_store | range | PRIMARY | PRIMARY | 8 | NULL | 9 | Using where | +----+-------------+---------+-------+---------------+---------+---------+------+------+-------------+ ID列 这一列包含一个编号,标识SELECT所属的行. 如果在语句中没有子查询,或者联合查询,那么只会有唯一的SELECT,否则内层的SELECT语句一般会顺序编号,对应其在原始语句中的位置. 1 2 3 4 5 6 7 8 9 10 11 12 mysql> EXPLAIN SELECT * FROM (SELECT id FROM t_store) AS ts WHERE ts....

April 4, 2019 · 7 min · BlackChen

平均负载 load averages 和uptime 命令

uptime 每次发现系统变慢时,我们通常做的第一件事,就是执行 top 或者 uptime 命令,来了解系统 的负载情况 1 2 $ uptime 22:33 up 1 day, 12:20, 4 users, load averages: 1.92 2.56 3.43 每列含义 22:33 当前时间 up 1 day,12:20 系统运行时间 4 users 正在登录用户数 load averages: 1.92 2.56 3.43 是过去 1 分钟、5 分钟、15 分钟的平均负载 平均负载 平均负载是指单位时间内,系统处于可运行状态(CPU正在处理)和不可中断状态(等待CPU处理)的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。 既然平均的是活跃进程数,那么最理想的,就是每个 CPU 上都刚好运行着一个进程,这样每个 CPU 都得到了充分利用. 例如: 当平均负载为 2时 在只有 2 个 CPU 的系统上,意味着所有的 CPU 都刚好被完全占用。 在 4 个 CPU 的系统上,意味着 CPU 有 50% 的空闲 而在只有 1 个 CPU 的系统中,则意味着有一半的进程竞争不到 CPU。 负载为多少是合理的 获取当前CPU个数 $ grep 'model name' /proc/cpuinfo | wc -l 当平均负载比 CPU 个数还大的时候,系统已经出现了过载。 观察1分钟,5分钟,15分钟的情况 如果 1 分钟、5 分钟、15 分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳。 但如果 1 分钟的值远小于 15 分钟的值,就说明系统最近 1 分钟的负载在减少,而过去 15分钟内却有很大的负载。 如果 1 分钟的值远大于 15 分钟的值,就说明最近 1 分钟的负载在增加,这种增加有可能只是临时性的,也有可能还会持续增加下去,所以就需要持续观察。一旦 1 分钟的平均负载接近或超过了 CPU 的个数,就意味着系统正在发生过载的问题,这时就得分析调查是哪里导致的问题,并要想办法优化了 经验 当平均负载高于 CPU 数量 70% 的时候,就应该分析排查负载高的问题了....

April 4, 2019 · 1 min · BlackChen

Linux 中 su user, sudo su - user, su , su - 等的区别

su user 和 sudo su user的区别 su user 需要提供user的密码 sudo su user 需要提供当前用户的密码 例如: 当前用户是guest su root 需要输入root用户的密码 sudo su root 需要输入guest的密码 su - user 和 su user的区别 带- 会切换当前的shell环境(环境变量会切换到对应的user上, 相当于执行 user目录下的 .bash 等文件) 例如: su,su -: 前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了 su - username 和 sudo su - username su - username - Asks the system to start a new login session for the specified user. The system will require the password for the user “username” (even if its the same as the current user)....

April 1, 2019 · 3 min · BlackChen

Linux/Unix 哲学

小即是美 Linux 的哲学之一,软件开发应该力求简单,小的程序易于理解,易于组合使用。多个小程序的组合可以解决很多问题。这里的小,是指简单,模块化,精简化。在那个硬件比较昂贵的年代,力求程序精简,使用很少的系统资源 ,而现在,在硬件相对成熟,小即是美,有另外一种解释—–“小”代表“精炼”,代表“完美”,因为小的事物,容易被掌控。细节方面更容易做的更好。 做好一件事—1 Thing 程序是人生的体现,不可能有一个程序是完美的,是照顾到方方面面的,他只能做好有限的事情,做好一件事,一个完美的程序就是他的一生只做好一件事,人生也是如此。 允许他人使用你的代码来发挥杠杆效应 站在楼顶总是要比站在楼下的人离天空更近一些,站在巨人的肩膀上总是要比别人更容易成功一些。让别人使用你的代码,让自己的代码发挥更大的力量。借用别人的代码,不做无用功,不重复造轮子,只有轮子的汽车是跑不起来的! 寻求90%的解决方案 或许存在100%的解决方案,但是是消耗了你大量的精力,并且最终达到的效果并不美好(效率底下等等。。),在合适的情况下,只需要解决90%的问题,便是一个好的方案。并且舍弃的10%,有时候并不是像你想象中的那么重要。 使用shell脚本 shell非常强大,可以带来无与伦比的杠杆效应,让多个程序来帮助自己实现目标,解决问题。shell是每一个Linux工程师的好帮手。 使用文本 文本可以传达更多更详细的信息,文本更利于阅读和编辑,一个好的文本编辑器可以大大提升效率。并且文本具有很强的移植性。 适合的就是最好的 每个人有每个人自己的特点,有自己的想法,别人的想法和经历只能借鉴,而你并不能成为其他人,你就是你,所以在遇到问题的时候,选择适合自己的方法去处理问题,linux也好,windows也罢,人是活的,东西是死的,只有人使用工具,没有被工具束缚的人。

February 23, 2019 · 1 min · BlackChen