《MacTalk•人生元编程》一一1.6 二逼文件

1.6 二逼文件

好,目录文件就介绍到这里,后续介绍的文件类型平时操作很少用到,我把它们统称为二逼文件类型,光荣入选的有以下几个。

块设备文件和字符设备文件,这些文件一般隐藏在/dev目录下,昼伏夜出,平时你感觉不到它们的存在,但是你想进行设备读取和外设交互时,就是它们大显身手的时候。比如磁盘光驱就是块设备文件,串口设备则属于字符设备文件。系统中的所有设备要么是块设备文件,要么是字符设备文件,无一例外。
FIFO,江湖人称命名管道,主要用于进程间通讯。比如使用mkfifo命令可以创建一个FIFO文件,启用一个进程A从FIFO文件里读数据,启动进程B往FIFO里写数据,先进先出,随写随读,童叟无欺。
套接字(socket),也是一种文件类型,可以用于进程间的网络通信,也可以用于本机之间的非网络通信。比如你会时不时见到后缀为sock的进程文件,这些文件一般隐藏在/var/run目录下,它们活跃在服务器里,证明着那些相关进程的存在。
符号链接(symbolic link),这种类型的文件类似Windows中的快捷方式,是指向另一个文件的间接指针,也就是我们常说的软链接。
            

这篇文章应该在昨晚写完的,动笔之前犹豫了一下,心想先读几篇好文章吧。于是翻出了王小波和阿城的随笔看,又读了往复(http://wangf.net)上的老冷文集,尤其是那篇《抬起头,看星星》(http://wangf.net/data/articles/c06/276.html),文字精炼质朴,浑然天成,读起来让人心灵清澈,不敢独享,摘录一段如下:

大约是夜里十一点钟的光景,我走到院子里,深深呼吸,猛然一抬头——天呐,我看见了满天的星星。

天空深蓝,星星密布,似乎触手可及,却又如此高远。没有一丝云彩,没有半点杂光。我呆在当地,张口结舌,感觉和做梦一样。满天都是星星。仔细看,银汉横陈,微微弯曲。北斗七星、北极星、织女星、牛郎星……我认识的星星、不认识的星星,如同珍珠的洪流,一齐向我扑来。一刹那,童年,那若有若无的岁月,也夹在这股洪流中,扑向我,把我的心鼓擂得轰轰作响。我就那样呆站着,痴痴地看,一直到颈脖僵硬,头晕眼花。

从那个时刻起,我再次发现了星星和世界的美丽,我的接近干渴的生命,降下了新鲜甜美的雨水。生命中的起伏和挫折,个人那一点点丧失和伤痛,那似乎无法忍受的一切,与这浩大雄伟的星空比起来,又算得了什么呢?

读好书,时间如天际的流星一闪即过,待得眼皮打架,已近凌晨,于是沉沉睡去。

今天上午9点醒来,吃过早餐就被家里的大小LD指示去打各种酱油,然后就没有上午了。午饭后,所有的血液都流向消化系统,内脏器官拉开架势准备消化主人胡吃海塞的成果,大脑所有理智的指示都被忽略掉,加之最近一个月神经病一样的工作日和休息日,再次昏睡过去,然后就没有下午了。

于是,现在,再一次,我打开Mac,开始写这篇文章。在开始之前,有了这些散碎的文字,其中两个问题困扰着我:

1.在坚持了这么久之后,我似乎依然是个拖延症患者.

2.看了这些炉火纯青的文字,每次写字会有心理障碍。是知其不可而为之者与?

我常常用软硬兼施来描述苹果帝国的生态环境。为了给客户提供更好的产品体验,苹果采用了相对封闭的策略,同时掌控了软件和硬件研发,谓之软硬兼施。这么做的好处当然是软件可以把定制化的硬件性能发挥到极致,并且不需要去兼容其他厂商的硬件设备。今天看到知乎上有人问:“苹果电脑(Mac)贵在何处?”答案中涉及了Mac的硬件工业设计,推荐给大家:http://www.zhihu.com/question/19814550。借用其中一句:“我是在回答‘苹果为什么显得贵’,而非‘你为什么要买苹果’。你全家都是果粉哦,亲。”

在Linux文件系统中,其实也存在“软硬”这样的描述,但是不涉及硬件体系,而是我今天要写的硬链接和软链接。

在人类的克隆技术还没那么完美的情况下,人做为一个独立的个体立于天地间,没有副本,没有替身,没有快捷方式,没有还血仙丹,一旦死亡,这个人就算了结了,在现实世界中被抹掉了。

在Linux的世界里,大部分文件也是类似的待遇,一旦文件被删除,文件相关的inode信息都会被抹掉,文件占用的磁盘空间也会被释放,这种情况下文件名和inode是一对一的。为了满足更为复杂的文件操作,Linux系统的设计者提供了更为高级的服务,那就是硬链接和软链接的技术,这些技术让Linux世界里的文件和目录具备了副本和替身的能力。效果就是你明明删除了某个文件,但是如果有人在你删除之前做了文件的硬链接,你会发现同样内容的文件依旧存在于系统中,你刚刚做的修改还在那里冒着热气。不要对自己说见鬼了,这是程序逻辑。

时间: 2024-08-29 11:29:02

《MacTalk•人生元编程》一一1.6 二逼文件的相关文章

《MacTalk•人生元编程》一一1.1 Linux的文件系统王国

1.1 Linux的文件系统王国 MacTalk•人生元编程在这个系列中和大家聊聊Linux的文件.索引节点.文件类型.软硬链接等内容,其中很多细节也是我使用了很长时间Linux后才真正掌握,希望大家不用那么久. 为什么是Linux?我觉得写技术的东西还是相对严谨一些好,虽然Unix.Linux.OS X一脉相承,但在具体命令上还是会有些差异,这个系列文章里所有的命令和显示结果都是在Linux上进行的,大家可以对照在Mac上试试,大部分一致,少部分不同. 在开始讲Linux王国的臣民之前,先介绍

《MacTalk•人生元编程》一一2.1 设计巨匠——乔纳森·艾维

2.1 设计巨匠--乔纳森·艾维 MacTalk•人生元编程今天看到一篇新闻,说苹果的CEO库克参加<华尔街日报>主办的D11科技大会时,谈了一些大家关心的热点问题,包括对Google Glass的看法,苹果的可穿戴技术策略(iWatch?),iOS平台为第三方开放更多的API,乔纳森·艾维(Jonathan Ive)主导iOS人机界面的设计等. Google的眼镜和Apple的手表离我这样的土老冒比较远,即使今秋发布iWatch,估计我也就是擦擦口水看一眼的份儿.第三方API呢,有新的用就是

《MacTalk•人生元编程》导读

前言 MacTalk•人生元编程在这本书付印的前一天,本书的责任编辑杨海玲老师找到了我说:书要出版了,你要不要写个前言和读者说两句?我说:来得及吗?杨老师郑重地看着我点了点头.好吧,那就说两句,于是就有了这一篇前言. 我小学四年级之前一直在农村居住,那时候没见过汽车,只见过马车和小推车.搬到城市之后才发现,这世上居然有汽车这种交通工具,那时我的理想是当一名212吉普车的司机.后来见的车多了,觉得司机不够神气,我希望拥有一辆自己的汽车.这个理想在长大后也实现了.但是我从没有想过自己会出版一本书!今

《MacTalk•人生元编程》一一1.2 inode元信息

1.2 inode元信息 上一篇文章中我们讲到了索引节点inode,每个文件都有一个唯一的inode对象,描述了文件的元信息.inode与文件是生死相依.一损俱损的关系,生命周期一致.很多痛恨身份证的人都说:"老子一生下来就有身份了,干嘛还又给个身份证?"Mac君对这种态度是赞同的.肯定的.欣赏的,但inode不一样,它就像你的指纹,属于文件的一部分并定义文件,这就像人生元编程一样,有了"元"的意味.inode由一个数据结构组成,主要包含这样一些字段: i_hash

《MacTalk•人生元编程》一一2.2 独自在家续篇兼答读者问

2.2 独自在家续篇兼答读者问 很多人没事就抱怨北京的空气,但是懂得变化的人会知道,何时赞美,何时吐槽. 总结一下,北京的空气变化大概是这个样子: 在月黑霾浓的深夜,伸手只见五指,这时一个叫做"大风"的环保工作者出现了,经过一夜激情,第二天阳光明媚,天蓝云白,PM2.5指数50,朋友圈多了很多蓝白之物.你极目远眺,蓝天和大地的交界处有一层透明的薄雾.第二天,深蓝变浅蓝,天地间的白雾变为灰色,PM2.5指数70.第三天,浅蓝变灰白,天地间夹了一层薄薄的雾霭,PM2.5升到120左右.第四

《MacTalk•人生元编程》一一1.7 硬链接

1.7 硬链接 基于inode技术,Linux允许多个文件名同时指向一个inode.好处就是,我们可以用不同的文件名去访问同一个文件,每次操作对文件内容的影响会波及所有"副本",删除掉一个"副本",不会影响其他文件.增加一个硬链接文件,仅仅是inode里的"Links"属性值加1,删除一个硬链接文件,属性值减1.只有"Links"的值为0时,文件才会被彻底删除,回收其占用的空间. 如何创建一个硬链接文件?非常简单: ln so

《MacTalk•人生元编程》一一1.3 inode的存储

1.3 inode的存储 文件会占用硬盘空间这事大家都清楚(注意,是空间,不是重量,无论您是复制100 GB进来,还是清除100 GB出去,硬盘都在那里,份量既不增一分,也不减一克),那么inode存放在哪里呢?当然也是在硬盘上,Linux是很聪明的,在分区和格式化硬盘的时候,就把硬盘分为了数据区和索引节点区.数据区存放普通文件,索引节点区存放inode对象.每个inode对象的大小一般是128字节或256字节,这个数值可以在格式化的时候设定. 如何查看inode的使用情况呢?可以执行如下命令:

《MacTalk•人生元编程》一一1.5 文艺文件

1.5 文艺文件 写到这儿你就知道,无论是Unix还是Linux,都是相当文艺范儿的.普通的说完了,就该是文艺的了,它就是大名鼎鼎的目录文件(directory file).这个概念对于用惯Windows的用户来说不太容易理解,文件是文件,目录是目录,岂可混为一谈?好吧,它文艺就文艺在这里了. 目录文件同样是Linux文件中的一种,它们包含了各自目录下的文件名和指向这些文件的指针,打开目录事实上就是打开目录文件,只要有访问权限,你就可以随意访问这些目录下的文件,但是只有内核的进程能够修改它们.

《MacTalk•人生元编程》一一1.8 软链接

1.8 软链接 软链接理解起来比较容易,类似Windows系统中的快捷方式. 软链接会创建新的inode,inode里主要记录了源文件的路径.当访问软链接文件时,系统会帮你自动指向源文件,无论你操作的是源文件,还是软链接文件,其实你最终操作的都是源文件,源文件删除了,软链接文件就成了无本之木,也就毫无意义,强制访问的后果就是No such file or directory. 创建软链接的命令如下: ln -s sourcefile destfile 大家可以尝试用stat命令查看这两个文件的i