只有光头才能变强。html
文本已收录至个人GitHub仓库,欢迎Star:github.com/ZhongFuChen…java
以前写过一篇 《 在公司作的项目和本身在学校作的有什么区别? 》不知道你们还有印象没有,里面提到了在工做中可能须要等上Linux服务器,查看一些信息(特别是查日志找Bug)。node
我在大学的时候也有过Linux的课程,在期间也作过Linux相关的笔记:linux
用户和权限管理看了你就会用啦github
Linux进程管理vim
Linux网络管理bash
可是,在学校学完,没咋练手(仍是太菜了),去到公司能够说是全忘光了。这篇文章主要来回顾之前的笔记,以及记录一下在工做中比较经常使用的一些命令。服务器
线上出现了问题,登上线上的机器查日志是很是常见的操做了。我第一次登上线上机器查日志的时候,我还只记得如下的几个命令(假设如今咱们的日志文件叫作service.log
):网络
cat service.log
tail -f service.log
vim serivice.log
如今日志天天产出的大小大概1GB:
若是是小文件的话,单纯的cat
命令仍是能够应付的,但若是你直接用cat
命令打开一个1GB的日志文件,保证卡死你(ctrl + c
退出cat
命令须要好久才能将cat
命令停下来)。
cat
来查看这个小文件的文本内容是什么一样地,若是是小文件,单纯的vim
命令去打开文件也是能够应付的,但若是你用vim
命令去打开一个1GB甚至更大的文件,也能明显感觉到缓慢和卡顿。
平时我仍是很喜欢用vim
去查找对应的记录的,我通常的操做:
vim service
G
跳转到文件的末尾?
+关键字搜索对应的记录n
往上查询,按N
往下查询tail -f service.log
这个命令我通常用于查看流量是否进来了(或者调试的时候能够直接看到日志,再迅速ctrl +c
关掉)
面对比较大的日志文件,这咱们就得配合grep
来玩了,好比咱们如今得知某个手机号收不到短信验证码,想要看一下这个手机号的日志是怎么样的。因而咱们就能够这样搞:
cat service.log | grep 13888888888
这么一搞,就能将service.log
中全部含有13888888888
的记录给搜出来,搜索的速度仍是贼快的。
如今咱们已经能根据关键字搜到对应的记录了,接着我想看一下那条记录的日志上下文【这样就能知道这条数据大概的执行状态了】
首先,咱们先要查出对应记录的行号,在cat
命令后面加上一个 -n
参数就行了。因此命令是:cat -n service.log | grep 13888888888
,以下图咱们就能够查到对应的行号了
如今行数是29506,咱们通常只要看一下29506的前10行和后10行就差很少知道问题出如今哪了,因而咱们能够这样作:
sed -n "29496,29516p" service.log
:从29496行开始检索,到29516行结束cat -n service.log | tail -n +29496 | head -n 20
:从29496行开始检索,往前推20条若是关键字不太准确(日志输出的记录太多了),咱们可使用more
命令来浏览或者输出到文件上再分析:
cat service.log | grep 13 |more
:将查询后的结果交由more输出cat service.log | grep 13 > /home/sanwai/aa.txt
将查询后的结果写到/home/sanwai/aa.txt
文件上有的时候,咱们想统计这个日志输出了多少行,咱们可使用这条命令:
cat service.log | wc -l
参考资料:
查进程有两个命令:
ps -ef
ps aux
上面两个命令都是列出全部的进程,咱们仍是经过 |
管道和grep
来过滤掉想要查的进程,好比说:ps -ef |grep java
把进程查出来干吗?知道它的进程ID了,咱们能够把他给杀掉。
kill -9 processId
:杀掉某个进程查端口也是一个很常见的操做,常见命令:netstat -lntup
:
l:listening n:num t:tcp u:udp p:display PID/Program name for sockets
查看当前全部tcp/udp端口的信息
复制代码
查看某个端口详细的信息:lsof -i:4000
TOP命令查看进程的状态,其中有个load average可能不是那么好理解,下面来解释一下:
load average:在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。
load average 有三个值,分别表明:1分钟、5分钟、15分钟内运行进程队列中的平均进程数量。
Linux进程能够分为三个状态:
好比如今系统有2个正在运行的进程,3个可运行进程,那么系统的load就是5,load average就是必定时间内的load数量均值。
linux的内存管理机制的思想包括(不敢说就是)内存利用率最大化,内核会把剩余的内存申请为cached,而cached不属于free范畴。
若是free的内存不够,内核会把部分cached的内存回收,回收的内存再分配给应用程序。因此对于linux系统,可用于分配的内存不仅是free的内存,还包括cached的内存(其实还包括buffers)。
Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(好比read,write,getdents)的时间。磁盘的操做有逻辑级(文件系统)和物理级(磁盘块)
参考资料:
我工做时长比较短,因此可能会有不少命令会忽略掉了,欢迎在评论区补充比较经常使用的命令。后续若是某些命令比较重要的,我再分享哈~
乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,关注便可获取!
以为个人文章写得不错,点赞!