这次聊聊「编译器和解释器」. 编程语言中,有以C为代表的编译型语言和以Perl为代表的解释型语言.不管是哪种,程序都是以人类能够理解的形式记录的,这种形式计算机是无法理解的. 因此,才会有编译器和解释器. 对于编译型语言,是使用编译器将人类可读的代码转换为机器能够理解的「机器语言」文件,然后通过执行这个「机器语言」文件来实现程序的执行. 另一方面,对于解释型语言,是使用解释器将人类可读的代码逐行解释,一边解释一边执行这个程序.(这里的解释是将代码解释成机器语言,让计算机能够理解) 甚至有的语言既…
这次聊聊 「/proc 文件夹」. /proc 文件夹用来保管系统状态相关的文件的特殊文件夹,这个文件夹中有的文件只是内存上的虚拟文件. /proc 文件夹下有些文件可以反映各个进程的运行状态.所以说是决定Linux运行的非常重要的文件夹. 通过这个文件夹下文件,可以获取各式各样的信息.比如,请在命令行下输入「cat /proc/cpuinfo」试试看.可以获得CPU的信息. 其它还可以获得内存信息,驱动信息,以及其它软硬件方面的各种信息. 因此,修改 /proc 文件夹下的文件,可以调整系统的…
这次介绍下新闻上提到的「小型移动式PC」.(这个当时日本新闻上的内容) 最近,经常在日本的大卖场中看到一种小型的移动式PC.不仅是小巧方便携带,而且价格也便宜.而且,省电功能的加入,使电池能工作更长的时间. 但是,由于这种PC比较小,可能也不太适合长时间的使用. 根据新闻的说法,这种小型的移动PC在国外有很多都是安装的Linux操作系统的.原因之一是「消减成本」. 这种被成为「NETBOOK」(上网本)的PC,是由美国的一个被称为 OLPC 的 NPO 率先发起的项目,这个项目的目的是为了给发展…
这周解释下「UTC 和 JST」. 地球上的国家之间是存在时差的.然而互联网是遍布全球的网络,跨国境的数据传输是很频繁的.因此,互联网上的服务器就需要一个共通的时间. 实际上,互联网上的服务器,大部分都是使用「协调世界时(UTC:Universal Time Coordinated)」.可能在学校的地理课上学过,英国使用的GMT因为和UTC是一致的而闻名.严格来说,GMT和UTC是不一样的. UTC是以铯原子的振动时间为基准,GMT是从1958年1月1日0时0分0秒开始计算的时间. 但是,地球的…
这次想说说「SCP和SFTP」. 不管SCP还是SFTP,都是SSH的功能之一.都是使用SSH协议来传输文件的. 不用说文件内容,就是登录时的用户信息都是经过SSH加密后才传输的,所以说SCP和SFTP实现了安全的文件传输. SCP和CP命令相似,SFTP和FTP的使用方法也类似.SCP和SFTP的共同之处在于「使用SSH将文件加密才传输的」 使用「WinSCP」或者「FileZilla」之类的客户端,还可以和Windows之间进行文件传输. SCP和SFTP的不同之处,首先就是之前提到的,SC…
这次,继续聊聊「虚拟化技术」. 根据上回的介绍,虚拟化技术可以使「计算机的台数和运行的OS的个数的比例不再是1:1」.这回介绍一下如何使用这个技术. 使用方法之一,「一台计算机上运行多个OS」.从个人用户的观点来看,这是最贴近个人用户的使用方法. 在已有的OS上通过虚拟化机安装Linux,然后在虚拟机上学习Linux的人有很多. 还有一种使用方法,实际上这种使用方法一直受到极大的关注,这种使用方法就是「将多台计算机构成一个系统」. 这种方法将多台计算机的计算能力汇集到一个系统中,可以大大提供系统…
X Window System是给Unix系的OS提供的一套窗口管理软件或者说是组件.X Window System已经成为了在Linux上使用GUI环境的不可或缺的东西了. X Window System诞生于马萨诸塞州(美国州名)工科大学的研究组,现在主要由  X.Org Foundation 这个组织来负责开发.目前的版本是「X11」(version 11). 上面所说的内容可能很多人都知道,但 X Window System 的架构「采用了服务端·客户端模式」这点就不那么广为人知了.正因…
现在的Linux,主流的文件系统是 「ext3」.但是,文件系统除此之外,还有「ReiserFS」「XFS」「ZFS」等等. 此外,Windows的主流文件系统是「NTFS」,CD-ROM的主流文件系统是「ISO9660」. 而且,Linux的文件系统「ext3」的下一代「ext4」也正在开发中.(内核版本 >= 2.6.19 就可以使用「ext4」) 「ext3」或者「XFS」这些文件系统中,采用了一种被称为「日志」的系统.(ext3之前的ext2文件系统没有采用「日志」这种系统) 这个所谓的…
上次介绍了Linus Torvalds, 这次介绍他开发的「内核」. 经常听人提到「Linux kernel」,但如果被问到「kernel究竟是什么?」的话,会出乎意料的觉得难以回答. 那么,kernel到底是什么呢?「kernel」翻译过来就是「核心」的意思,简单来说,「Linux的核心程序就是Linux kernel」. 其实严格来说,「Linux」就是指「Linux kernel」.(最近,「Linux发行版」简称为「Linux」的情况越来越多) 将Linux kernel解释成「系统核心…
这次聊聊「GCC」. GCC是「GNU Compiler Collection」的简称,由C.C++.FORTRAN.Java等语言的编译器以及这些语言的库所组成. GCC不仅包含编译器本身,还包含了编译所必要的库,所以可以编译多种语言所写的代码. GCC是免费软件,几乎所有Linux发行版中都包含它,所有使用Linux的时候可以很方便的使用GCC. 甚至可以这么说「提到Linux就不能不提GCC」. 使用GCC最重要的目的之一,就是「构建Linux内核」. 编译Linux内核源码的时候,是用G…
这次,谈谈关于「环境变量」的话题. 所谓变量,就是在程序中设置的,相当于在内存中准备的「一个用来存放数据的小箱子」. 即,程序通过变量来保存值,通过变量保存的内容来进行各式各样的计算处理. 「环境变量」也是变量的一种.那它和普通的变量有什么区别呢?普通变量只对定义它的程序有效,而环境变量是所有程序共享的变量. 对于 Linux Shell而言,不仅Shell本身能够使用,被Shell产生的子进程也能使用的变量就是环境变量. 环境变量的名称通常用大写字母来定义.实际上用小写字母来定义环境变量也不会…
这次聊聊「syslog」. 上次聊了「日志」(lgo).这次说起syslog,一看到log(日志)就明白是怎么回事了.syslog是获取系统日志的工具. 很多UINIX系的OS都采用了这个程序,它承担了「获取系统全部的日志」这个维持系统正常运行的重要任务. syslog的本体是「syslogd」这个daemon(一般翻译成守护进程),常驻内存中获取日志. syslog的特点是可以通过配置文件「/etc/syslog.conf」,对「哪种应用程序?哪种重要度的信息?记录在哪个文件中?」等进行细致的…
这周聊聊「NTP」. 上次,聊了「时区」,也就是时间相关的话题. NTP是「Network Time Protocol」的简称,是为了将网络中计算机的时钟同步到正确时间的协议. PC内部的时钟是相当不准确的,运行一个月左右就会产生几秒的误差.网络上的服务器,经常由于时钟的误差导致电子邮件的发送接收记录等出现异常. 因此,接入统一网络的主机的时钟有必要互相同步时钟.NTP就是用来解决这个问题的. NTP是以「服务端·客户端」的方式提供的.「NTP服务器」使用原子时钟之类东西时钟保持正确的时间,然后…
上次说了端口号相关的内容,这次聊聊「端口限制」的事. 经常看到关于安全的书籍上会说「不要开放多余的端口」,那么,如何限制端口才好呢? 实际,端口限制的方法大体上分的话有2种. 其一,「通过应用程序来处理」.试着一下考虑「打开端口」本来是怎么一回事.比如,启动Apache之类的Web服务程序的时候,(如果没有特别的设置)会打开Well known ports中的80号端口, 然后通过80号端口开始等待通信. 所以,如果关闭了服务端应用程序的话,端口也会自动被关闭.「不要开放多余的端口」也就是「不要…
实际上,「别名」被用在多种场合下.比如「命令的别名」,「邮件地址的别名」等等. 所以,单独说「别名」的时候,根据不用的场合,代表的意思也不一样. 一般来说,「别名」是指意思差不多的东西. 「别名」的英文是「alias」,日语就是「别名」. 说「邮件地址的别名」的时候,也可以看出别名的含义. 比如将「foo@example.com」设为「bar@example.com」,以「bar@example.com」为接收方的邮件就会发给「foo@example.com」. Linux中经常使用的除了邮件地…
这次聊聊「单CD Linux」. 所谓「单CD Linux」,就是不用安装,从CD-ROM启动后就可以使用的Linux. 有名的KNOPPIX就是「单CD Linux」,此外还有Puppy Linux.最近,Fedora和Gentoo也以「Live CD版」或者「Live DVD版」的方式发布了不用安装也能使用的Linux了. 那么,「单CD Linux」或者「Live CD」的方式有什么优势呢? 优势之一,因为不用安装,直接从CD-ROM启动后就能使用,所以最适合评价一个Linux发行版.即,…
这次,聊聊关于「命令行提示符」的相关内容. bash之类的Shell程序是操作Linux所不可缺少的东西.其中bash的提示符也有承担了很重要的作用. 「命令行提示符」的英文是「command prompt」,其中「prompt」有促使,推动的意思,根据这个意思,Shell中的「命令行提示符」就有促使,推动用户输入的意思. (下面的说明以bash为例,bash是Shell程序的一种) 目前的Linux发行版中,提示符一般都像下面这样: [user@host001 /etc]$ 上面这个提示符中包…
这次聊聊路径的使用,这里的路径是「命令搜索路径」的简称. 在Linux上执行命令的时候,本来是需要命令的所在位置的绝对路径的,就像「/usr/bin/passwd」这样. 但是,对于经常使用的命令,如果每次都要输入绝对路径的话就非常麻烦了. 在Linux的Shell中,执行某个命令时,用户不用输入命令的完整路径,直接输入命令后,系统会在特定的目录中查找这个命令,找到后执行. 这时,设置Shell在哪些目录中搜索命令的步骤就被称为「路径设置」,正确的应该是「命令搜索路径的设置」 为了设置路径,需要…
经常有人会问「Linux和Unix有什么区别?」,「Linux就是Unix吗?」. 回答一般都是「Linux是仿照Unix而开发的OS」,「Linux和Unix相似但不是一种OS」之类的. 关于「Linux和Unix」,这其中还有些故事. 首先,「Unix」是1970年左右由美国AT&T公司的贝尔实验室开发,并将开发推进下去而形成的OS. 现在,「Unix」这个商标由The Open Group所拥有,因此可以说「Linux不是Unix」. 另一方面,还有一个「Linux不是Unix」的理由.1…
包括OS,所有的软件都有版本号信息.一般来说,版本号的增大表示软件的功能增强了或者修正了一些Bug,也就是表示软件更新了. 版本号的命名方式没有统一的标准.每种软件都不一样. 大部分情况下,版本号以「X.Y」或者「X.Y.Z」的方式命名,软件有大幅的功能增强时,增加「X」的数值,只有微小的改变时,增加「Y」或者「Z」的数值. 因此,「X」被称为「主版本号」,「Y」或者「Z」被称为「次版本号」. 但是,版本号有时还有其他的含义.比如Linux内核的版本号,现在是以「X.Y.Z」的方式命名的,200…
Linux刚开始是作为可运行在 Intel 的 「i386」CPU上,与POSIX兼容的内核来开发的. 而现在主流的Linux是指能在所谓「PC」上运行的内核.「PC」是指采用「IA(intel架构)」的机器. IA(Intel Architecture)虽然「I」是指Intel,但Linux并不是只能运行在Intel生产的CPU上.比如另一个非常大CPU生产商AMD所生产的兼容IA的CPU, 还有其他很多以省电为目的的兼容IA的CPU,这些CPU都可以被称作「IA」. 因此,Linux也就有可…
i386是指 *CPU* 的种类,也可以指 *CPU* 的架构(architecture). 现在的 CPU 一般都用 「Core 2 Duo」或者「Athlon」,「Xeon」,「Opteron」之类的比较酷的名称来称呼. Linux诞生的时候,CPU作为一个重要的组件,一般用型号来称呼它. i386的 i 代表 Intel. Intel公司最先生产的,从4004开始的CPU系列中,386(80386)是第一个32位的CPU. Linux刚开始就是作为386架构上兼容POSIX的内核来开发的.…
这次聊聊「RFC」. 有很多人经常听说「RFC」的吧,上次介绍的NTP是由「RFC1305规定的」,HTTP是由「RFC2616规定的」. RFC是「Request For Comments」的简称,由 Internet Engineering Task Force 公开的,以指定互联网技术标准「为目标」的文档. 可以这么说,互联网技术中的大部分都是依据它来实现的. 但是,上面的「为目标」用括号括起来是有原因的.实际上互联网技术每天都在变化,想要标准化是非常困难的. 即使规定了「这个是标准」,根…
这次聊聊「邮件服务器」. 邮件服务器上通常会运行2个服务端软件,「SMTP服务器」和「POP服务器或者IMAP服务器」. 这2个东西,也许使用邮件客户端的人立马就明白了.因为设置邮件客户端的时候,需要指定「发信服务器」和「收信服务器」. 这2个服务器是同一个的情况虽然也不少,但是一般指定「发信服务器」或者「收信服务器」的时候,都是指「发送邮件的服务端软件」和「接收邮件的服务端软件」. 发送邮件时,发送邮件的路线简单表示如下: 即,发邮件的客户端使用SMTP(Simple Mail Transfe…
这次说说「端口」和「端口号」. 平时经常会听人说「打开了80号端口」,为了安全「不要打开多余的端口」等等.那么,这里的端口或者端口号是什么呢? 首先,「端口」是TCP或者UDP上使用的概念,经常被比喻成「窗口」.而且,端口号也被比喻成窗口编号. 举个例子,比如去邮局汇款时,并不是每个窗口都可以汇款的,只有特定的窗口才能办理汇款业务.所以,每个窗口都会编号. 端口号和上面的情况类似,比如,Web服务器通过HTTP接受通信的时候,是通过Web服务器的80号端口来通信的. 同样,SMPT使用25号端口…
对于理解服务器和网络来说,「协议」是不可缺少的概念. 「协议(protocol)」有「规则,规定」的意思. 实际上「协议」的函数很广,在通信领域,「协议」规定了「在通信时,什么样的情况下,以什么样的顺序,什么样的方式交互什么样的数据」. 抽象的去理解「协议」可能会比较困难,下面来举个例子. 通过Web以HTML方式交互时使用的协议是「HTTP」(Hyper Text Transfer Protocol).这个协议最重要的就是规定了服务器和客户端之间以HTML方式交互的规则. 比如,客户端连接上服…
新年的开始,聊聊「怎么做才能成为Linux内核开发者」. Linux内核的开发都是由志愿开发者们完成的.他们并不属于某些特定的企业. 因此,你也有参加Linux内核开发的资格.不用说,卓越的编码技术以及对所开发功能的相关知识有确实的掌握是必要的. 但是,除了技术和知识之外,如果还有很好的交流能力的话,那么你写的代码会有更大的机会被Linux内核所采用. 本来Linux内核的来源就是,Linus Torvalds在互联网上公开内核的最初代码,随着这个代码在开发人员中的广泛流传,很多的开发人员参与到…
这次说说「cron」. 「cron」就是「定期自动执行任务的工具」(相当于windows中的计划任务).读做「库隆」.使用「cron」,可以预先指定任务在某个时间执行. 时间的指定并不只是「一小时一次」这种简单的指定方法,还可以指定只有某天的某时才执行任务,或者指定8点-22点每小时执行一次等等. 还可以指定到具体的时间(可以具体到分钟).使用起来有些规则,但不是很难. 「cron」被称为运用Linux所不可缺少的工具.可用来定期的管理获取日志的软件,定期的检查系统状态. 甚至可用来监视进程或者…
说起module(模块),有的像「可热插拔的零部件」的意思. 在讨论Linux时提到的模块一般是指可以组装到内核中的模块. 模块这个概念是在硬件和程序设计领域中广泛使用的概念.我们这次说的模块特指Linux内核中的模块. 内核模块简单来说就是「作为内核程序主体的一个小配件来使用的程序」,也就是说,只有模块是什么也做不了的.安装到内核中才能起作用. 比如有一个新的设备或者一个新的功能想要追加到内核中时,就可以用模块的方式来实现.(设备驱动最好考虑用内核模块的方式来提供) 此时,如果把相应的模块直接…
主要讨论日语中的读法,所以没有完全按照原文来翻译. 「linux」的读法有很多(这里指在日语中),代表性的读法有以下几种: A). 李纳苦思 B). 李奴苦思 C). 纳依纳苦思 A和B相同的是将 linux开头的「li」发音成「李」.这也是linux之父Linus Torvalds的名字的日语假名(「リーナス・トーバルズ」)的由来. linux中「nu」的发音是怎么样的呢?Linux Online的网页上有说明,而且视频中还有 Linus Torvalds 的发音. http://www.li…