jck28 - 小柒 - 服务端问题定位常用linux指令集合

1、找到服务运行路径

部分服务只知道端口,或者关键字。那如何定位找到某个关键字的服务的运行路径?

指令:
ps -ef | grep XXX //通过关键字XXX,获取进程信息,查看进程的PID编号
ll /proc/PID //通过PID编号,获取CWD信息,查看程序的运行路径

2、动态跟踪日志,过滤关键字和反向过滤关键字

在查看日志时,需要动态跟踪日志,有时候日志太多或者刷新太快,只关注部分想看的关键字。或者有一些DEBUG关键字日志不想看到。可以通过grep来

实现。
指令:
tail -f XXX.log | grep AAA //动态跟踪XXX.log日志,只查看包含了AAA关键字的日志
tail -f XXX.log| grep -v BBB //动态跟踪XXX.log日志,同时不查看包含了BBB关键字的日志。

3、查看某个端口是否被占用

大量服务是通过端口号做区分,可以使用指令查看某一个端口号,是否被占用。
指令:
netstat -lntup | grep port //通过port端口号,获取端口占用信息,查看占用端口进程PID

4、查看系统磁盘使用情况

会存储部分异常服务日志异常打满了磁盘的情况,我们可以通过指令定为到是哪一个文件占满了日志
指令:
df      //查看当前系统的磁盘、挂接的磁盘
du -sh *  //查看当前路径下,所有文件的大小
du  -h   --max-depth  N   //查看指定路径下,指定N层文件的的大小

5、查找某个名字的文件

可以需要找到包含某个关键字的文件,但是只记得部分名字,可使用find 加通配符定为文件。
指令:
find .  "*XXX*"    //查看当前路径下,文件名包含了XXX关键字的所有文件。

6、查看所有日志或者文本文件中,是否包含某个关键字。

需要知道当前的文件中,是否包含某个指定关键
grep -rl XXX //查看当前路径下的所有文本文件,是否包含XXX关键字。
grep -r XXX //查看当前路径下的所有文件,具体那一个文件的哪一行,包含了XXX关键字

7、查询曾经执行过的某一个指令

同一用户需要指令的某些指令,经常是重复执行某一命令。可以用过方向键的↑键,或者history指令查找历史指令。
指令:
history | grep XXX   //查看包含XXX关键字的历史指令。

8、强杀包含某个关键字的服务

某些服务,可能因为异常原因,需要强制停止。可以使用kill 指令
指令:

ps -aux | grep XXX //查看包含XXX关键字的进程,其中第二列为进程的PID关键字。
kill -9 PID //强制停止进程PID的服务

9、查看当前机器的运行状态

某些服务运行异常时,会消耗掉机器的大量资源,为了查看当前机器的状态,可以使用指令,查看当前机器cpu、内存、磁盘的运行状态。
指令:
top //查看当前机器运行状态下,cpu、内存的运行和消耗状态
iostat //查看当前机器磁盘的读写状态

10、批量删除路径下,包含某些关键字的文件。

有些服务运行时间比较之后,会产生大量的日志文件。可以通过通配的方法,批量删除路径下的文件。
指令:
rm -rf XXX.log.20190* //批量删除路径下,以XXX.log.20190开通的所有文件。(-f会跳过确认,需要谨慎使用)

11、服务器之间传输文件

有场景涉及到多个服务器之间传递文件数据。可以使用linux自带的SimpleHTTPServer服务实现
指令:
python -m SimpleHTTPServer //在需要下载的路径下执行
wget host:8000/filename //在目标服务器直接使用wget下载文件。
同时,在windows浏览器中,使用http://host:8000 可以浏览执行路径下所有的文件服务器。
8000端口被占用时,直接使用python -m SimpleHTTPServer 8001 修改成8001端口

12、重复执行上次相同的指令

在部分场景,需要重复执行相同指令。
指令:
ps -ef | grep 8000 //第一次执行指令
!ps //直接再次执行 ps -ef | grep 8000 指令

附录:

鸟哥私房菜:http://cn.linux.vbird.org/
指令合集:
Linux 常用命令学习 | 菜鸟教程