本文并不是介绍Linux命令的手册,而是侧重于命令在特定场景下如何帮助应急人员和攻关人员定位问题并解决问题,因此,对于每个命令的介绍将直切主题,直接介绍命令使用的具体场景,而不是介绍命令的详细使用格式。
01.必不可少的基础命令和工具
1、grep
grep是Linux下通用的文本内容查找命令。
也可以利用它打印匹配的上下几行,线上查找问题的时候,可以使用下列命令,查找关键字,显示关键字出现行的后5行,并且给关键字着色。
使用方式:
- grep -5 'parttern' INPUT_FILE #打印匹配行的前后5行
- grep -C 5 'parttern' INPUT_FILE #打印匹配行的前后5行
- grep -A 5 'parttern' INPUT_FILE #打印匹配行的后5行
- $grep -B 5 'parttern' INPUT_FILE #打印匹配行的前5行
- grep -A -15 --color 1010061938 * #查找后着色
2、find
通过文件名称查找文件的存在位置,名称查找支持模糊匹配。
使用方式:
- find . -name FILE_NAME
命令输出:
- robert@robert-ubuntu1410:~$ find . -name VestaServer.java
- ./working/workspace/vesta-id-generator/vesta-server/src/main/java/com/robert/vesta/server/VestaServer.java
3、uptime
查看机器的启动时间、登录用户、平均负载等情况,通常用在线上应急或者技术攻关的时候来确定操作系统的重启时间。
使用方式:
- uptime
命令输出:
- robert@robert-ubuntu1410:~$ uptime
- 14:42:30 up 2:51, 3 users, load average:0.03, 0.06, 0.06
从上面输出可以看到如下信息:
- 当前时间:14:42:30
- 系统已运行的时间:2小时51分
- 当前在线用户:3个用户
- 系统平均负载:0.03, 0.06, 0.06,最近1分钟、5分钟、15分钟系统的负载情况
系统平均负载指在特定时间间隔内队列中运行的平均进程数。如果一个进程满足以下条件,它其就会位于运行队列中:
- 它没有在等待IO操作的结果
- 它没有主动进入等待状态(也就是没有调用'wait'相关的系统API)
- 没有被停止(例如:等待终止)
一般来说,每个CPU内核对应活动进程数不大于3,则系统运行良好,换句话说,也就是活动进程数小于CPU核数的3倍。
举例说明,如果你的服务器的cpu有3个核心,那么只要uptime最后输出的一串字符数值小于9,即表示系统负载正常。但是,如果系统负载超过10,那就表示当前系统负载过重,需要定位系统执行任务负载超标的原因。
4、lsof
列出系统当前打开的文件句柄,在Linux文件系统中,任何资源都是以文件句柄的形式管理的,例如:硬件设备、文件、网络套接字等,系统内部为每一种资源分配一个句柄,应用程序只能用操作系统分配的句柄来引用资源,因此,文件句柄为应用程序与基础操作系统之间的交互提供了通用的操作接口。
应用程序打开文件的描述符列表包含了大量的关于应用程序本身的运行信息,因此通过lsof工具查看这个文件句柄列表,对系统监控以及应急排错提供重要的帮助。
查看某一个进程打开的文件句柄:
- lsof -p 2862
命令输出:
- robert@robert-ubuntu1410:~$ lsof -p 2862 | less
- COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
- java 2862 robert cwd DIR 8,1 4096 537041 /home/robert/working/workspace/vesta-id-generator/releases/vesta-id-generator-0.0.1-release/bin/vesta-rest-0.0.1
- java 2862 robert rtd DIR 8,1 4096 2 /
- java 2862 robert txt REG 8,1 5730 1064639 /home/robert/working/softwares/jdk1.8.0_20/bin/java
- java 2862 robert mem REG 8,1 7216688 1318996 /usr/lib/locale/locale-archive
- java 2862 robert mem REG 8,1 65525265 1189622 /home/robert/working/softwares/jdk1.8.0_20/jre/lib/rt.jar
- java 2862 robert mem REG 8,1 80460 1189581 /home/robert/working/softwares/jdk1.8.0_20/jre/lib/i386/libnio.so
- java 2862 robert mem REG 8,1 103299 1189580 /home/robert/working/softwares/jdk1.8.0_20/jre/lib/i386/libnet.so
- java 2862 robert mem REG 8,1 81884 1583248 /usr/share/locale-langpack/zh_CN/LC_MESSAGES/libc.mo
- java 2862 robert mem REG 8,1 3131363 1189479 /home/robert/working/softwares/jdk1.8.0_20/jre/lib/charsets.jar
- java 2862 robert mem REG 8,1 3500527 1189621 /home/robert/working/softwares/jdk1.8.0_20/jre/lib/resources.jar
- java 2862 robert mem REG 8,1 1179307 1330505 /home/robert/working/softwares/jdk1.8.0_20/jre/lib/ext/localedata.jar
- java 2862 robert mem REG 8,1 615948 1189601 /home/robert/working/softwares/jdk1.8.0_20/jre/lib/jsse.jar
- java 2862 robert mem REG 8,1 3860522 1330502 /home/robert/working/softwares/jdk1.8.0_20/jre/lib/ext/cldrdata.jar
- java 2862 robert mem REG 8,1 1065895 1330501 /home/robert/working/softwares/jdk1.8.0_20/jre/lib/ext/bcprov-jdk15-132.jar
- ......
查看某一个端口的使用方式:
- lsof -i :8080
(编辑:ASP站长网)
|