Browsed by
标签:Linux

使用grep恢复被删文件内容

使用grep恢复被删文件内容

在Unix/Linux下,最危险的命令恐怕就属rm命令了,每次在root下使用这个命令的时候,我都要盯着命令行看上几分钟才敢把回车敲下去。以前,看到同事在脚本中使用rm命令 —— rm {$App_Dir}/* 。因为脚本没有判断变量$App_Dir是否为空,结果,在一次用root操作的时候,整个操作系统一下就不见了,还好只是开发机。从此,我们大家都再也不敢使用rm命令了。

这里给大家介绍一个小技巧用来恢复一些被rm了的文件中的数据。我们知道,rm命令其实并不是真正的从物理上删除文件内容,只过不把文件的inode回收了,其实文件内容还在硬盘上。所以,如果你不小删除了什么比较重要的程序配置文件的时候,我们完全可以用grep命令在恢复,下面是一个恢复示例:

grep -a -B 50 -A 60 'some string in the file' /dev/sda1 > results.txt

说明:

  • 关于grep的-a意为–binary-files=text,也就是把二进制文件当作文本文件。
  • -B和-A的选项就是这段字符串之前几行和之后几行。
  • /dev/sda1,就是硬盘设备,
  • > results.txt,就是把结果重定向到results.txt文件中。

如果你幸运的话,你就可以看到被恢复的内容了。这正是Unix的简单哲学(详见《Unix传奇下篇》)—— 所有的设备都是文件

当然,我还是建议你把root用户的rm的命令用alias换成别一个脚本,那个脚本会帮你把删除的文件放到某个地方。

好烂啊有点差凑合看看还不错很精彩 (13 人打了分,平均分: 4.38 )
Loading...
Unix传奇(上篇)

Unix传奇(上篇)

【本文曾于2007年3月于我在CSDN上的BLOG发布,现在我把其搬到酷壳来,一来是觉得这段历史相当传奇,值得大家再看看,二来也和我在酷壳上发布的一些文章相互链接。】


了解过去,我们才能知其然,更知所以然。总结过去,我们才会知道我们明天该如何去规划,该如何去走。在时间的滚轮中,许许多的东西就像流星一样一闪而逝,而有些东西却能经受着时间的考验散发着经久的魅力,让人津津乐道,流传至今。要知道明天怎么去选择,怎么去做,不是盲目地跟从今天各种各样琳琅满目前沿技术,而应该是去 —— 认认真真地了解和回顾历史。 

Unix是目前还在存活的操作系统的元老了,走过了40年的历程(参看《Unix 40年:Unix年鉴》、《Unix 40年:昨天,今天和明天》)。在技术更新如此迅速的计算机世界的今天,Unix始终保持它那神圣的光环,它那曲折和令人叹息的历史,以及由它引发的思想变革,对当今计算机文化造成的深远影响,这40年所产生的人和事,让它成为了一个传奇,不能不让人为之惊叹。

这是一段所有从事计算机行业人员尤其是软件开发人员需要了解的历史。Unix的传奇历史是整个计算机世界文化最具代表性的,它对整个计算机世界文化的影响也是最巨大,最深远的。他给人带来的不单单的对过去的回味,更为我们带来了计算机世界的新思潮。

了解这段的历史的人,才能体会计算机世界变迁过程中的是是非非,才能了解计算机世界中的文化,从而才能参与到整个计算机革命的大潮中。希望这段历史,这篇文章能让你感受到计算机世界那强力的脉搏,从而让你踏上这条令人充满激情的道路。

上篇

  • Unix起源
  • Unix分裂
  • Unix的法律纠纷
  • GNU开源组织
  • Linux横空出世
  • Linux今天的领袖

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (16 人打了分,平均分: 5.00 )
Loading...
Unix传奇(下篇)

Unix传奇(下篇)

【本文曾于2007年3月于我在CSDN上的BLOG发布,现在我把其搬到酷壳来,一来是觉得这段历史相当传奇,值得大家再看看,二来也和我在酷壳上发布的一些文章相互链接。】


<<<<   Unix传奇(上篇)
Unix是目前还在存活的操作系统的元老了,走过了40年的历程(参看《Unix 40年:Unix年鉴》、《Unix 40年:昨天,今天和明天》)。由它引发的思想变革,对当今计算机文化造成的深远影响。这是一段所有从事计算机行业人员尤其是软件开发人员需要了解的历史。Unix的传奇历史是整个计算机世界文化最具代表性的,它对整个计算机世界文化的影响也是最巨大,最深远的。他给人带来的不单单的对过去的回味,更为我们带来了计算机世界的新思潮。

下篇

  • Unix与黑客文化
  • Unix的历史教训
  • Unix 家族谱
  • Unix的特点
  • Unix的影响和哲学
  • Unix痛恨者手册

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (32 人打了分,平均分: 4.88 )
Loading...
粉丝眼中的操作系统

粉丝眼中的操作系统

在发布完《程序员眼中的编程语言》一文后,发现网上还有一个关于操作系统的。如下所示。

  • 图片的横轴是三大操作系统。
  • 纵轴是各操作系统的粉丝和信徒。
  • 中间的各个小图片则是,粉丝眼中的操作系统的形象。

关于操作系统,还有这一张图也很有意思。

粉丝眼中的操作系统

好烂啊有点差凑合看看还不错很精彩 (49 人打了分,平均分: 4.90 )
Loading...
ldd 的一个安全问题

ldd 的一个安全问题

我们知道“ldd”这个命令主要是被程序员或是管理员用来查看可执行文件所依赖的动态链接库的。是的,这就是这个命令的用处。可是,这个命令比你想像的要危险得多,也许很多黑客通过ldd的安全问题来攻击你的服务器。其实,ldd的安全问题存在很长的时间了,但居然没有被官方文档所记录来下,这听上去更加难以理解了。怎么?是不是听起来有点不可思议?下面,让我为你细细道来。

首先,我们先来了解一下,我们怎么来使用ldd的,请你看一下下面的几个命令:

(1) $ ldd /bin/grep
        linux-gate.so.1 =>  (0xffffe000)
        libc.so.6 => /lib/libc.so.6 (0xb7eca000)
        /lib/ld-linux.so.2 (0xb801e000)

(2) $ LD_TRACE_LOADED_OBJECTS=1 /bin/grep
        linux-gate.so.1 =>  (0xffffe000)
        libc.so.6 => /lib/libc.so.6 (0xb7e30000)
        /lib/ld-linux.so.2 (0xb7f84000)

(3) $ LD_TRACE_LOADED_OBJECTS=1 /lib/ld-linux.so.2 /bin/grep
        linux-gate.so.1 =>  (0xffffe000)
        libc.so.6 => /lib/libc.so.6 (0xb7f7c000)
        /lib/ld-linux.so.2 (0xb80d0000)

第(1)个命令,我们运行了 `ldd` 于 `/bin/grep`。我们可以看到命令的输出是我们想要的,那就是 `/bin/grep` 所依赖的动态链接库。

第(2)个命令设置了一个叫 LD_TRACE_LOADED_OBJECTS 的环境变量,然后就好像在运行命令 `/bin/grep` (但其实并不是)。 其运行结果和ldd的输出是一样的!

第(3)个命令也是设置了环境变量 LD_TRACE_LOADED_OBJECTS ,然后调用了动态链接库 `ld-linux.so` 并把 `/bin/grep` 作为参数传给它。我们发现,其输出结果还是和前面两个一样的。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (7 人打了分,平均分: 4.29 )
Loading...
用脚本实现哄小孩睡觉

用脚本实现哄小孩睡觉

baby_linux当然,不并需要一个天才式的人才能做到这个事,其实这个事情很简单。让我来一点一点向你解释。下面是一些准备工作。

  • 首先,你得找一台PC机,得配上光驱,光驱可以破一点。
  • 然后,你得给这台PC机上装上Linux,不需要太多的东西,最基本的就行了。
  • 然后,你得写下下面的代码。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (19 人打了分,平均分: 4.84 )
Loading...
CentOS上php的问题及Selinux安全设置

CentOS上php的问题及Selinux安全设置

最近有位站长在用我们WebIM客户端的时候,无法登录我们的WebIM服务器,十分惊讶。 在我们的用户里尚属首例,其实更惊讶的是我的CentOS也遇到了同样的问题。然后分析了这位站长的HttpResponse , Shamee :( 一样的OS.

搜了一下,发现的解决方法都是在代码上。 我想可能关键词有错误,因为我坚信我的问题肯定不在代码上,应该是来自OS本身的限制。于是重新debug了一下代码,报错 permission (13) connection。然后直接在洋人的邮件列表里搜了一下。

问题确定了 是SeLinux(http://zh.wikipedia.org/wiki/SELinux)安全策略的限制。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (5 人打了分,平均分: 4.80 )
Loading...
如何调试bash脚本

如何调试bash脚本

如何调试Bash脚本Bash 是Linux操作系统的默认Shell脚本。Shell是用来处理操作系统和用户交互的一个程序。Shell的脚本可以帮助用户自动化地和操作系统进行交互。你也可以理解为一种脚本式的编程。即然有编程,那么,程序的编译器,解释器,调试器就必不可少了,Bash也一样,但在调试方面可能会有一些和编程语言不一样的东西和技术,所以,下面这篇文章主要是说明调试bash脚本的各种技术。

跟踪脚本的执行

你可以让bash打印出你脚本执行的过程中的所有语句。这很简单,只需要使用bash的-x选项就可以做到,下面让我们来看一下。

阅读全文 Read More

好烂啊有点差凑合看看还不错很精彩 (8 人打了分,平均分: 4.88 )
Loading...