一次线上nohup.out日志丢失的问题
今天有小伙伴求助,线上一个应用的nohup.out日志不更新了,但进程还是正常的。此时需要查看这个日志排查一些问题,这可怎么办呢?
nohup.out文件的更新时间停留在了昨天9点36,日志也刚好打到这个时间点。
但后面的日志去哪里了呢?这个问题就优点难办了,原因可能很多。比如不小心把文件删除了,或者重命名了。
那现在没时间找原因,能不能紧急把日志恢复呢?或者说在不重启进程的情况下,把日志找回来呢?
方法是有的,不过得从linux的/proc目录说起。
先来看看/proc目录的作用:
/proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。可以使用的文件随系统配置的变化而变化。命令procinfo能够显示基于其中某些文件的多种系统信息。以下详细描述/proc下的文件。
/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过 proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是 动态从系统内核读出所需信息并提交的。
简单来说,/proc目录下存放所有进程的所有信息,当然也包括进程当前打开的文件信息。通过ps命令找到对应进程的PID,先来看看这个进程对应目录都有哪些信息。

可以看到该目录下面的文件、子目录也还是比较多的。从问题出发,我们只需要关注fd目录,这个目录报错当前进程相关的所有文件信息(注意不仅仅是普通文件,还有socket等信息)。
来搜一下有没有nohup.out,居然真的有!但为啥显示是deleted呢?鬼才知道,难道不是小伙伴自己私下操作了还不承认么?

都显示deleted了,怎么恢复呢?大家有没有看到这是一个软连接呢?软连接就是对原文件的一个连接,原文件删除时,只要软连接不删除,文件就不会被物理删除。

通过tail命令,居然有最新的日志内容!!!head命令看下呢?进程启动时候的日志也是有的。

是不是比较惊喜?这个目录居然有进程启动以来所有的日志?那么是不是可以恢复从昨天到现在所有的日志了呢?当然,这个日志文件太大了,我们只需要昨天到现在的日志。可以 用tail -200000 /proc/55160/fd/1把日志打印到另一个文件。至此,日志就全都找回来了。
我们总计一下解决这个问题的步骤:
1、通过ps命令找到进程的pid
2、去/proc目录下,找到进程打开的文件。ls -l /proc/${pid}/fd
3、/proc/${pid}/fd目录下找到丢失的文件。进行紧急修复
一次线上nohup.out日志丢失的问题的更多相关文章
- 【线上监控】日志上报bug处理方式总结
说明:若直接在网站看觉得字体太小,可以下载下来后放大看会更加清晰.不会失真. 目前总结到此,后期有改动,再次补充与总结
- Nodejs线上日志部署
Nodejs 被越来越多的使用到线上系统中,但线上系统没有日志怎么行呢. 一.forever记录日志 我的线上系统使用forever来启动服务,最开始就直接使用了forever来记录 forever ...
- 【转】一次Java线程池误用(newFixedThreadPool)引发的线上血案和总结
[转]原文链接:https://cloud.tencent.com/developer/article/1497826 这是一个十分严重的线上问题 自从最近的某年某月某天起,线上服务开始变得不那么稳定 ...
- 一次Java线程池误用(newFixedThreadPool)引发的线上血案和总结
一次Java线程池误用(newFixedThreadPool)引发的线上血案和总结 这是一个十分严重的线上问题 自从最近的某年某月某天起,线上服务开始变得不那么稳定(软病).在高峰期,时常有几台机器的 ...
- vue中解决chrome浏览器自动播放音频 和MP3语音打包到线上
一.vue中解决chrome浏览器自动播放音频 需求 有新订单的时候,页面自动语音提示和弹出提示框: 问题 chrome浏览器在18年4月起,就在桌面浏览器全面禁止了音视频的自动播放功能.严格地来说, ...
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到JVM的实时运行状态?
https://alibaba.github.io/arthas/ Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决 ...
- 线上日志集中化可视化管理:ELK
本文来自网易云社区 作者:王贝 为什么推荐ELK: 当线上服务器出了问题,我们要做的最重要的事情是什么?当需要实时监控跟踪服务器的健康情况,我们又要拿什么去分析?大家一定会说,去看日志,去分析日志.是 ...
- Flume线上日志采集【模板】
Flume线上日志采集[模板] 预装软件 Java HDFS Lzo/Lzop 系统版本 Flume 1.5.0-cdh5.4.0 系统流程图 flume-env.sh配置文件 export JAVA ...
- 记一次log4j日志导致线上OOM问题案例
最近一个服务突然出现 OutOfMemoryError,两台服务因为这个原因挂掉了,一直在full gc.还因为这个问题我们小组吃了一个线上故障.很是纳闷,一直运行的好好的,怎么突然就不行了呢... ...
随机推荐
- Centos与Ubuntu
共同点 1.两个系统都分别有桌面系统与服务器系统,不过ubuntu的桌面从外观上来看要比centos的漂亮 不同点 1.centos中新建的普通用户是没有sudo权限的,如果想让普通用户拥有sudo权 ...
- CF-528D Fuzzy Search(FFT字符串匹配)
Fuzzy Search 题意: 给定一个模式串和目标串按下图方式匹配,错开位置不多于k 解题思路: 总共只有\(A C G T\)四个字符,那么我们可以按照各个字符进行匹配,比如按照\(A\)进行匹 ...
- 2016 CCPC-Final-Wash(优先队列+贪心)
Wash Mr.Panda is about to engage in his favourite activity doing laundry! He’s brought ...
- Java8新特性一点通 | 回顾功能接口Functional Interface
Functional Interface Functional Interface是什么? 功能接口是java 8中的新增功能,它们只允许一个抽象方法.这些接口也称为单抽象方法接口(SAM接口).这些 ...
- 暑假第六周总结(对HBASE进行编程实践并且安装Redis)
本周主要是根据教程对HBASE进行了编程实践,对于hadoop的编程来说需要用到很多的.jar 包,在进行编程实践的时候需要参照相关的教程将jar包添加至程序当中去.教程上给的代码还是比较详细的,加上 ...
- HDU_3652_数位dp
http://acm.hdu.edu.cn/showproblem.php?pid=3652 cal(a,b,c,d),a表示当前位置,b表示是否有13的3种状态,c表示前面的数%13后的剩余,d表示 ...
- 静态代码块&非静态代码块&构造函数
总结:静态代码块总是最先执行.非静态代码块跟非静态方法一样,跟对象有关.只不过非静态代码块在构造函数之前执行.父类非静态代码块.构造函数执行完毕后(相当于父类对象初始化完成), 才开始执行子类的非静态 ...
- partition show for oracle version
Dear all You may remember that my blog has a view script for checking sqlserver partition tables. No ...
- 手写Tomcat
学习JavaWeb之后,只知道如何部署项目到Tomcat中,而并不了解其内部如何运行,底层原理为何,因此写下此篇博客初步探究一下.学习之前需要知识铺垫已列出:Tomcat目录结构.HTTP协议.IO. ...
- jquery + ajax 提交数据报错
报错 Forbidden (CSRF token missing or incorrect.): /account/test/ [20/Oct/2016 18:10:44] "POST /a ...