无论是开发人员还是运维人员,在程序运行的过程中肯定会遇到各种各样的花式问题,我个人觉得程序出问题就像人生病一样,人生病的时候会从身体上表现出来,程序出问题也会从操作系统上表现出来。
1、服务卡死了
场景:运行一直很稳定的服务,突然CPU占用100%
处理:
(1)首先尝试重启进程
查看进程PID:
ps -ef | grep XXXX
终止进程:
kill [进程PID]
查看终止结果:
ps -ef | grep [进程PID]
(2)多次重试,无法终止
(3)强制终止
强制终止:
kill -9 [进程PID]
查看终止结果:
ps -ef | grep [进程PID]
(4)启动进程
发现找不到启动文件,原来被运维小哥手滑删了,导致进程还在,程序文件没了,重新上传并启动。
2、是谁抢了我的内存
场景:16G的云服务器内存报警,上面运行了4个java进程,需要定位是哪个服务占用了大量内存。
处理:
(1)top指令查看内存占用情况,在top界面中,查看每个进程的RES(常驻内存)的值找到内存占用大户
(2)如果是java应用,可能在COMMAND一列只显示java,无法定位是哪个java应用
(3)通过top界面得到进程PID,在利用ps指令定位是哪一个应用。
ps -ef | grep [进程PID]
3、echo的一种应用——清空被程序占用的日志文件
场景:tomcat的catalina.out、nginx的会话日志等由于没做好分割配置导致磁盘写满。
有时候发现,有一些程序会占用正在读写的日志文件,如果强制删除可能会产生奇怪的问题。我遇见过的情况有强制删除后不在程序产生日志文件,或者强制删除后不释放磁盘空间等。需要重启服务才能解决,很多线上服务是不允许轻易重启的。遇到这种情况,可以通echo指令写个空,覆盖原来日志文件。
echo '' > catalina.out
以上只是很简单的3个场景,仅用于给新手一个抛砖引玉,很多刚开始接触Linux的同学可能只是将其用作运行程序的载体,不会深入去研究更多的细节,所以一般不会去看市面上那些几百页的教程,而网上搜集的零散信息又不成体系,所以我觉得阿里推出的云起实验室正好弥补了这个问题,稍微有些基础的人可以用不到1个小时的时间把文件管理、文本操作、系统管理、磁盘管理等方面搞明白。后期我个人希望云起实验室增加Linux的权限、安全管理相关的内容,这些在开发阶段可能没什么用,但是在产品上线后,无论是在稳定运行还是安全合规方面都是问题的重灾区。