今天有小伙伴求助,线上一个应用的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目录下找到丢失的文件。进行紧急修复

1、 Linux中/proc目录下文件详解

一次线上nohup.out日志丢失的问题的更多相关文章

  1. 【线上监控】日志上报bug处理方式总结

    说明:若直接在网站看觉得字体太小,可以下载下来后放大看会更加清晰.不会失真. 目前总结到此,后期有改动,再次补充与总结

  2. Nodejs线上日志部署

    Nodejs 被越来越多的使用到线上系统中,但线上系统没有日志怎么行呢. 一.forever记录日志 我的线上系统使用forever来启动服务,最开始就直接使用了forever来记录 forever ...

  3. 【转】一次Java线程池误用(newFixedThreadPool)引发的线上血案和总结

    [转]原文链接:https://cloud.tencent.com/developer/article/1497826 这是一个十分严重的线上问题 自从最近的某年某月某天起,线上服务开始变得不那么稳定 ...

  4. 一次Java线程池误用(newFixedThreadPool)引发的线上血案和总结

    一次Java线程池误用(newFixedThreadPool)引发的线上血案和总结 这是一个十分严重的线上问题 自从最近的某年某月某天起,线上服务开始变得不那么稳定(软病).在高峰期,时常有几台机器的 ...

  5. vue中解决chrome浏览器自动播放音频 和MP3语音打包到线上

    一.vue中解决chrome浏览器自动播放音频 需求 有新订单的时候,页面自动语音提示和弹出提示框: 问题 chrome浏览器在18年4月起,就在桌面浏览器全面禁止了音视频的自动播放功能.严格地来说, ...

  6. 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的运行状况? 有什么办法可以监控到JVM的实时运行状态?

    https://alibaba.github.io/arthas/ Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱. 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决 ...

  7. 线上日志集中化可视化管理:ELK

    本文来自网易云社区 作者:王贝 为什么推荐ELK: 当线上服务器出了问题,我们要做的最重要的事情是什么?当需要实时监控跟踪服务器的健康情况,我们又要拿什么去分析?大家一定会说,去看日志,去分析日志.是 ...

  8. Flume线上日志采集【模板】

    Flume线上日志采集[模板] 预装软件 Java HDFS Lzo/Lzop 系统版本 Flume 1.5.0-cdh5.4.0 系统流程图 flume-env.sh配置文件 export JAVA ...

  9. 记一次log4j日志导致线上OOM问题案例

    最近一个服务突然出现 OutOfMemoryError,两台服务因为这个原因挂掉了,一直在full gc.还因为这个问题我们小组吃了一个线上故障.很是纳闷,一直运行的好好的,怎么突然就不行了呢... ...

随机推荐

  1. 2020年薪30W的Java程序员都要求熟悉JVM与性能调优!

    前言 作为Java程序员,你有没有被JVM伤害过?面试的时候是否碰到过对JVM的灵魂拷问?   一.JVM 内存区域划分 1.程序计数器(线程私有) 程序计数器(Program Counter Reg ...

  2. windows丢失文件的恢复技巧

    这几天在使用STVD调试程序的时候,突然跳出来一个“共享冲突”错误,当时并没有在意,点确定后赶紧CTRL+S,然后就一直死在那里了... 结束任务,重启STVD,提示找不到main.c,到此也不以为然 ...

  3. Docker Swarm 从入门到放弃

    准备工作 我本机是macOS,所以我直接安装了docker desktop,其中包含了docker-machine,不用单独安装. 安装docker主机驱动 我在网上很多人提到了使用virtualbo ...

  4. DWZ框架--页面样式丢失

    案例 今天我导入DWZ框架demo时,发现主页面样式丢失,出现了如下图那鬼样: 正常情况应该是有表格显示,并且用chrome开发者模式调试,可以看到有对应的样式,如下图所示: 先简单介绍下dwz框架的 ...

  5. hive安装启动错误总结

    错误一: Exception in thread "main" java.lang.NoClassDefFoundError: jline/console/completer/Ar ...

  6. 用java编写代码实现关机

    public static void main(String[] args) { Runtime runtime = Runtime.getRuntime(); try { runtime.exec( ...

  7. Codeforces Round #618 (Div. 2)

    题库链接 https://codeforces.ml/contest/1300 A. Non-zero 一个数组,每次操作可以给某个数加1,让这个数组的积和和不为0的最小操作数 显然如果有0的话,必须 ...

  8. NLP(十九)首次使用BERT的可视化指导

      本文(部分内容)翻译自文章A Visual Guide to Using BERT for the First Time,其作者为Jay Alammar,访问网址为:http://jalammar ...

  9. GDI+ Hello World

    学WTL/MFC,学不会了去看WIN32. 学C/C++,学不会了去看汇编. 使用VS,不明白了去用cl.exe/link.exe 控制台下输出图片的分辨率: #include <windows ...

  10. Codeforces 922 E Birds (背包dp)被define坑了的一题

    网页链接:点击打开链接 Apart from plush toys, Imp is a huge fan of little yellow birds! To summon birds, Imp ne ...