Welcome 微信登录

首页 / 操作系统 / Linux / Linux下恢复被误删除的syslog—/var/log/messages

软件开发日常工作中,出于方便定位问题的需要,我们常常会去清空日志文件。但是,Linux新手容易犯的一个错误是把日志文件给直接删除,而不是删除日志文件的内容。直接删除日志文件往往导致新产生的日志记录无法被写入到日志文件中(因为它已经被删除了),而仅仅重新新建(touch)同样名字的文件是解决不了问题的。下面以Unbutu系统为例,说明如何恢复被误删除的syslog: 首先,在以root用户执行如下lsof命令,查询打开/var/log/messages文件的进程的进程ID(PID)。 root@ www.linuxidc.com :/var/log# lsof | grep messages
rsyslogd 544 syslog 7w REG 8,1 214641 134422 /var/log/messages 从上面命令输出可以看到,这个打开/var/log/messages文件的进程的PID是544,文件/var/log/messages的文件描述符(FD)号是7。
根据上述的PID和FD,可以在/proc找到对应的文件: root@ www.linuxidc.com :/var/log#ls -al /proc/544/fd/7
l-wx------ 1 root root 64 2012-07-14 14:48 7 -> /var/log/messages 将文件/proc/544/fd/7拷贝到/var/log/messages cp /proc/544/fd/7 /var/log/messages 然后重新启动syslog服务即可恢复被误删除的日志文件,并且新的日志记录能够继续被写入日志文件。
以root用户运行service命令。其中,service命令的第2个参数可能是syslog、也可能是rsyslog。
具体可以使用通过命令查询得知。 root@ www.linuxidc.com :/proc/544/fd# service --status-all
[ ? ] ...
[ ? ] rc.local
[ ? ] rsyslog
[ ? ] screen-cleanup
[ ? ] ...
root@ www.linuxidc.com :/proc/544/fd# service rsyslog restart
rsyslog start/running, process 2673 BTW,真正用来清空日志文件的命令应该是: cat /dev/null>/var/log/messages Linux下文件描述符Ubuntu gedit出错:Failed to connect to the session manager相关资讯      Linux使用教程 
  • 如何在 Linux 中安全擦除删除的文  (04/10/2014 06:12:05)
  • Linux中profile的执行说明  (09/28/2012 06:16:01)
  • Mac/Linux 多线程下载解决方案  (08/30/2012 07:39:07)
  • Linux下AutoTools工具集使用教程  (11/20/2012 12:13:57)
  • Linux下根据端口号查询对应进程  (09/05/2012 06:14:34)
  • Linux平台下HD 2000/3000/4000性能  (08/28/2012 06:28:48)
本文评论 查看全部评论 (0)
表情: 姓名: 字数