教学   解释什么是 Linux ?什么是作业系统?_派派后花园

用户中心 游戏论坛 社区服务
发帖 回复
阅读:2095 回复:3

[系统] 教学   解释什么是 Linux ?什么是作业系统?

刷新数据 楼层直达
ghostya1017

ZxID:1331246


等级: 家喻户晓
原创音乐
举报 只看楼主 使用道具 楼主   发表于: 2009-01-12 0
教学   解释什么是 Linux ?什么是作业系统?
[size=4]教学   解释什么是 Linux ?什么是作业系统?[/size]


要了解 Linux 之前,就不能不知道什么是作业系统 ( Operation System, OS ),所以,首先我们来简单的说一说什么是作业系统吧!先来想一想,当我们使用电脑时,荧幕上面显示的咚咚是由哪里来的?嗯!是由显示卡与荧幕显像的;那么你现在可以藉由网路看到这篇文章,则是藉由 Internet 、网路卡、网路线以及所有相关的电子器材与网路器材所完成的一项任务!如果你要看 VCD 呢?那么就需要光碟机、光碟、音效卡的发声等等的支援。这么说来的话,所以在‘工作’的东西都是‘硬体’的工作呀!对了!就是这些电脑硬体在工作的。那么硬体怎么工作呢?那就是藉由‘作业系统’来达成的啰!这个作业系统就是在沟通你这个使用者跟硬体之间的讯息传递啦!也就是说,没有作业系统,那么你的电脑硬体就只是一堆废铁,什么工作都不能做的!

那么作业系统里面含有什么东西呢?简单的来说,作业系统主要分为两个东西,一个是‘核心’、一个是‘一堆核心提供的工具’我们以使用者常使用的 Windows 电脑来做一个简单的说明好了。大家应该都使用过 Windows 电脑里面的档案总管吧?那么当你开启档案总管的时候,他是否会显示你硬碟当中的资料?这个显示硬碟里面的资料,就是‘核心’帮你做的,但是,你要核心去显示硬碟哪一个目录下的资料,则是由‘档案总管’这个‘工具’帮你达成的!这样可以理解吗?再来,如果您曾经使用过 Windows 2000 或 Windows XP 的话,那就更好了!你就应该听过有所谓的‘FAT32 与 NTFS 档案格式’吧?在 Windows 98 这个早期的 Windows 版本中,他并无法读取或者是找到 Windows XP 的 NTFS 档案格式的硬碟,为什么呢?因为他的‘核心’本来就不认识 NTFS 啊!所以,即使你有档案总管,但是由于核心根本不认识 NTFS ,所以,档案总管也是没有能力帮你达到你想要做的事情!这样应该就更清楚了吧?没错!你的整个硬体是由核心来管理的,而如果核心不认识你的硬体,那么你将无法使用该硬体设备,例如上面提到的 NTFS 档案格式的硬碟!核心就是‘ Kernel ’,他是一个作业系统的最底层的东西,由他来掌管整个硬体资源的工作状态,而 Linux 有 Linux 自己的核心, Windows 也有他自己的核心。所以说,当有新的硬体加入到你的系统中的时候,那么若你的‘ Kernel ’并没有支援他的时候,呵呵,这个新的硬体就肯定无法工作的,因为控制他的 Kernel 并不认识他呀!这样了解了吗?!先有个概略性的了解,后面我们提到‘核心编译’的时候会在更详细的谈到他!

一般来说,Kernel 管理的事项有:

# System call interface :一些服务与 kernel 沟通之后,将硬体的资源进一步的利用;
# Process control :系统程序控制中心,所以核心编的越小越好;
# Memory management :控制整个系统的记忆体管理;
# File system management :档案系统的管理,例如 I/O 等等的工作啦!还有不同档案格式的支援啦等等,如果你的核心不认识某个档案系统,那么您将无法使用该档案格式的档案啰!例如上面提到的 Windows 98 不认识 NTFS 档案格式的硬碟;
# Device drivers :就如同上面提到的,硬体的管理是 Kernel 的主要工作之一,当然啰,装置的驱动程式就是核心需要做的事情啦!好在目前都有所谓的‘可载入模组’功能,可以将驱动程式编辑成模组,就不需要重新的编译核心啦!这个也会在后续的核心编译当中提到的!

所以啦!所有硬体的资源都是他来管理的!至于我们要达成一些工作时,除了藉由核心本身提供的功能 ( 例如上面提到的档案总管 ) 之外,还可以藉由其他的应用软体来达成喔!举个例子来说,你要看 VCD 影片是吧!那么除了 Windows 提供的媒体播放程式之外,你也可以自行安装 VCD 播放程式来播放 VCD 啰!这个播放程式就是应用软体啰,而这个应用软体可以帮你去控制核心来工作 ( 就是放映影片啰 ) ,因此,我们可以这样说,核心是控制整个硬体支援的咚咚,也是一个作业系统的最底层,然而要让整个作业系统更完备的话,那还需要含有相当丰富的核心提供的工具,以及核心相关的应用软体来支援!

OK!提到这里那么您知道 Linux 是什么了吗?呵呵!对啦!其实 Linux 就是一个作业系统,这个作业系统里头含有最主要的 kernel 以及 kernel 提供的工具啦!他提供了一个完整的作业系统当中最底层的硬体控制与资源管理的完整架构,这个架构是沿袭 Unix 良好的传统来的,所以相当的稳定而功能强大!此外,由于这个优良的架构可以在目前的个人电脑 ( X86 系统 ) 上面跑,所以很多的软体开发者将他们的工作心血移转到这个架构上面,那就是很多的应用软体啦!虽然 Linux 仅是其核心与核心提供的工具,不过,由于核心、核心工具与这些软体开发者提供的软体的整合,使得 Linux 成为一个更完整的、功能强大的作业系统啰!我们可以将 Linux 的系统与使用者的相关性看成底下的图示:


图一、使用者、使用者介面与核心工具、核心、与硬体之相关性

约略了解 Linux 是何物之后,接下来,我们要谈一谈,‘为什么说 Linux 是很稳定的作业系统呢?他是如何来的?’

从 Unix 到 Linux 这一段历史

为什么大家常常会说, Linux 是很稳定的一套作业系统呢?这是因为, Linux 他有个老前辈,那就是 Unix 家族啰!有这个前辈的提携,让 Linux 这个小老弟很快的就成为一套稳定而优良的作业系统啦!所以,底下我们来谈一谈 Unix 到 Linux 的这一段历史吧!

早在 Linux 出现之前的二十年 ( 大约在 1970 年代 ), 就有一个相当稳定而成熟的作业系统存在了!那就是 Linux 的老大哥‘ Unix ’是也!怎么这么说呢?!他们这两个家伙有什么关系呀?这里就给他说一说啰!众所皆知的, Linux 的核心是由 Linus Torvalds 在 1991 年的时候给他开发出来的,并且丢到网路上提供大家下载,后来大家觉得这个小东西 ( Linux Kernel ) 相当的小而精巧,所以慢慢的就有相当多的朋友投入这个小东西的研究领域里面去了!但是为什么这的小东西这么棒呢?!然而又为什么大家都可以免费的下载这个东西呢?!嗯!等鸟哥慢慢的唬xx....喔不!听我慢慢的道来!

* 一个没有完成的梦想: Bell, MIT 与 GE 的‘ Multics ’系统

早期的电脑并不像现在的个人电脑一般,他可不是一般人碰的到的玩意儿,除非是军事或者是高科技用途才有可能接触到这类的 Computer !而如前面所言,有电脑硬体还需要作业系统的配合才能够发挥电脑的效能,不过,在那个年代,由于电脑算是‘奢侈品’,喔~应该说是‘贵重物品’,所以,可能一间学校就只有一部大型主机当然,那个年代所谓的大型主机仍然无法提供适度的运算能力的。不过,既然只有一部大型主机,然而有许许多多的教师、学生要想要来使用,怎么办呢?为了解决这个问题,在 1960 年代初期,麻省理工学院 ( MIT ) 发展了所谓的‘相容分时系统 ( Compatible Time-Sharing System, CTSS )’,就字面上的意义来看,他主要让大型主机可以提供多个终端机连线进入主机使用主机的资源, ( 附带一提,当时的终端机 ( Terminal ) 本身并没有软体或者可供使用的资源,这些终端机要能使用,一定必需要连线登入主机之后,才能够使用主机的资源来工作!) 当时可以让约 30 位使用者连线使用主机。而为了让这个分时系统更加的强大,所以,在 1965 年前后由贝尔研究室 ( Bell )、 麻省理工学院 ( MIT ) 及奇异电器公司 ( GE ) 开始来共同开发一个名为 Multics 的大型计划,目标是想让大型主机可以连线 300 位以上的使用者。不过,在奋斗了四年之后,该计划仍然宣告不治...喔!是失败啦!(注: Multics 有复杂、多数的意思。)

* 一个小型档案系统的产生:1969 年 Ken Thompson 的小型 file server system

在复杂的 Multics 系统的计划失败后,贝尔研究室当然就退出该计划。就在这个计划解散之后,曾经参与 Muitics 的贝尔研究室的成员 Ken Thompson 由于自己工作上的需求,需要一套档案存取的小型作业系统,便在 1969 年的时候以 DEC 公司 ( Digital Equipment Corporation ) 的电脑 PDP-7 为硬体基准,设计了一个适合自己工作环境的小型档案系统,其中也含有他自行开发的一些小工具。那个系统就是最早期的 Unix 的源头!当初 Ken 设计这个档案系统时,主要是为了自己的存取方便所设计的简单 OS ,因此将原有的 Multics 系统大幅度的简化,不过,在当时还并没有 Unix 这个名词的出现!

* Unix 的正式诞生:1973 年 Ritchie 等人以 C 语言写出第一个正式 Unix 核心

由于 Thompson 写的那个作业系统实在太好用了,所以在 Bell 研究室内部广为流传,并且数度经过改版。到了 1973 年, Bell 研究室的 Dennis Ritchie 等人为了让这个系统的执行效能更佳化,所以使用编译效能更好的 C 语言将原有的 1969 年的那个系统之核心大幅度的改写过,并且确定该作业系统名称为 Unix,呵呵!那就是最早的 Unix 作业系统啰!不过,由于这个作业系统是由这一群工程师所开发完成的,而且使用者也大多是这方面的工程师,因此造成了后来 Unix 系统介面较难被一般使用者接受的情况 @_@ (注: 相对于 Multics ,Unix 具有单一的意思!)

* 重要的 Unix 分支: 1977 年 BSD 的诞生

在 Unix 早期的发展中,有一件相当重要的事情,那就是 BSD 的诞生!由于 C 语言是一种高阶语言,他可以被应用在不同的硬体架构上面,而 Unix 本身就是 C 语言写成的!在 Unix 发表之后, 柏克莱大学 ( Berkeley ) 的教授对于这个作业系统相当的有兴趣,在经过取得 Unix 的原始码,并且几经修改之后,终于在 1977 年发表了第一代的 Berkeley Software Distribution ( BSD ) 。这个 BSD 是 Unix 的一个分支,他的发展对于 Unix 有相当大的影响,例如后来的 Sun 公司就是使用 BSD 发展的核心进行自己商业的 Unix 版本的发展的!

* 百家齐鸣的 Unix 版本:

由于 C 语言是一个相当高阶的程式语言,他与硬体没有很直接的相关性,例如你的 Windows 也可以执行 C 程式语言!而由于 Unix 是由 C 语言写成的,因此,也就是说,你只要经过稍微的原始码修改程序,就可以在不同的硬体架构上面执行这个作业系统!后来,由于 Unix 的方便性,因此很多的商业公司及学术机构就加入这个作业系统的研发啰。不过,也由于 Unix 的便利性与改写容易,因此就造成了很多的不同版本的 Unix 啰,例如 ATT 的 System V 、 加州大学的 BSD 版、 IBM 的 AIX 等等。

由于‘作业系统的核心 ( Kernel ) 必须要跟硬体配合,以提供及控制硬体的资源进行良好的工作!’,而在早期每一家生产电脑硬体的公司还没有所谓的‘协定’的概念,所以每一个电脑公司出产的硬体自然就不相同啰!因此他们必须要为自己的电脑硬体开发合适的 Unix 系统,所以,他们自行开发的 Unix 当然只能配合本身的硬体配备啰!例如在学术机构相当有名的 Sun 、 Cray 与 HP 就是这一种情况,他们开发出来的 Unix 并没有办法在其他的硬体架构下工作的! ( 我们都称呼这种系统与配备为‘超级电脑’ ) !由于没有厂商针对个人电脑设计 Unix 系统,因此,在早期并没有支援个人电脑的 Unix 作业系统的出现 ( 当然,这是由于早期的个人电脑并没有现在这样风行就是了! ) ,每一家公司自己出的 Unix 虽然在架构上面大同小异,但是却真的仅能支援自身的硬体,所以啰,早先的 Unix 只能与伺服器 ( Server ) 或者是大型工作站 ( Workstation ) 划上等号!

此外,由于版本太多了,而大家都是同样来自于 Unix 这个老祖宗,当然也都称自己是 Unix ,好了,如此一来,许多商业公司自然就会有类似的软体发表,喝!那么自然就有些许的商业纠纷啰!真是伤脑筋~

* 1984 年的 GNU 与 Free Software Foundation:

Unix 在商业上面的问题让许多对于 Unix 喜好者感到相当的忧心,其中一个就是有名的 Richard M. Stallman 先生。他认为, Unix 是一个相当好的作业系统,在这个系统上面,如果大家能够将自己所学的贡献出来,那么这个系统将会更加的优异!Stallman 先生认为最大的快乐就是让自己发展的良好的软体让大家来使用了!而且,由于每个人的工作环境 ( 指软硬体平台 ) 可能都不太相同,所以,他也强调应该要有 Open Source 的概念,让大家都能够分享这一份的心得!他认为,有了 Open Source 之后,你的程式将有很多的人可以帮忙检验,将使得 Unix 社群更佳的茁壮。为了自己的理想, Stallman 在 1984 年实际创立了 GNU 与 自由软体基金会 ( Free Software Foundation, FSF ),并创作了许多‘自由软体’供大众来使用,此外,对于其作品以自由 ( free ) 的 GNU General Public License ( GPL ) 的授权模式提供大众使用。这个 FSF 的核心观念是‘版权制度是促进社会进步的手段,版权本身不是自然权力。’对于 FSF 有兴趣或者对于 GNU 想要更深入的了解时,请参考朝阳大学的洪朝贵教授的网站,里面有更为深入的解说!而且,Stallman 的 GNU General Public License 一直强调 Free 这个字眼!他是这样说的:‘"Free software" is a matter of liberty, not price. To understand the concept, you should think of "free speech", not "free beer". "Free software" refers to the users freedom to run, copy, distribute, study, change, and improve the software’大意是说,自由软体并不是指‘免费’的,而是指具有‘自由度, freedom’的软体,什么是自由度呢?也就是你在取得这个软体之后,可以进行修改、进一步发表与复制在不同的电脑平台上面。这无疑是个好消息!因为如此一来,你所拿到的软体可能原先只能在 Unix 上面跑,但是经过原始码的修改之后,你将可以拿他在 Linux 或者是 Windows 上面来跑!Stallman 先生更直接对自由度下了这样的说明:

o 你可以根据任何你想要的提议 ( purpose ) 来跑这个 Free 的程式;
o 你可以在理解了这支 Free 的程式的运作之后,将他修改成你所想要的样式与功能;
o 你可以将你自己修改过的 Free 的程式再次的发表,以帮助你的朋友们;
o 你可以将这支 Free 的程式进行改良,并将改良过的程式公开发表,以造福社群!

简单的来说, GPL 授权具有几个特点:

o 任何软体挂上 GPL 授权之后,即为自由的软体,任何人均可取得,同时,亦可取得其原始码 ( Source Code );
o 取得 GPL 授权之软体后,任何人均可进行修改原始码,以符合自己的喜好;
o 除此之外,经过修改的 Source Code 应回报给网路社会,提供大家来参考!

但请特别留意,并非挂上 GPL 之后的软体就不可贩卖,这个是不同的两回事呦!举个例子来说,在 Red Hat 的官方网站上面提供 Red Hat 释出的 Linux 安装光碟提供大众下载,但是 Red Hat 本身依然有在卖 Linux 的套件,而且还卖的‘很不便宜!’为何可以如此呢?呵呵!因为 Red Hat 他们卖的资料当中,含有相当大量经过整了的文件资料,这些资料虽然在网路上面可以下载,然而花了这么多的时间来整理这些资料,当然应该要给予相当程度的报酬啰!您说是吧!所以,请留意喔!并非 GPL 不可用来营利!

这个 GNU 对于后来的 Linux 有相当深远的影响,由于 Stallman 先生发展了 GNU 这个计划中,主力在推出各种方便而优异的工具软体,例如广为大家所知的 Emacs 文书编辑器、GCC, BASH..然而没有作业平台怎么使用这些软体呢?然而,由于他倡导的自由软体,让后来的心血能很快的接触原始码来发展软体,这就是后来的 Linux 的故事....这是后来的故事,等一下来说~

* 1988 年的图形介面 X-Free86 project:

有鉴于图形使用者介面 ( Graphical User Interface, GUI ) 的需求日益加重,在 1984 年由 MIT 与其他协力厂商首次发表了 X Window System ,并且更在 1988 年成立了非营利性质的 XFree86 这个组织。所谓的 XFree86 其实是 X window system 与 Free 及 x86 系统架构的整合名称呢!而这个 XFree86 的 GUI 介面更在 Linux 的核心 1.0 版于 1994 年释出时,整合于 Linux 作业系统当中!

* 1991 年 芬兰大学生 Linus Torvalds 的一则简讯:

在后来的几年内,由于电脑硬体工业的强力运作,以 intel 主导的 x86 系统架构的个人电脑大行其道,所以个人电脑算是相当流行的一个机器了!但在此时,人们使用的大多还是旧旧而且需要吃很多系统资源的 DOS 系列或其他的作业系统。 此时,有个芬兰的郝尔辛基大学 (Helsinki )Linus Torvalds 学生做了件不寻常的事情! Linus 手边有个 Minix 系统 ( 这也是 Unix 的分支 ) ,他对这个作业系统相当的有兴趣!此外,由于当时他正好买了一部 386 的电脑,所以他就想说,咦!这个 Unix 这么棒!这么稳定,那我可不可以将他移植到个人电脑 ( X86 架构 ) 来使用呢?!好在由于 Stallman 提倡的 Open Source 风气,他得以接触到一些 source code ,而就经由这样的一个想法,呵呵!他就很有心的读取 Unix 的核心,并且去除较为繁复的核心程序,将他改写成可以适用于一般个人电脑的 x86 系统上面,到了 1991 年,他终于将 0.02 版的 hobby 放到网路上面供大家下载,并且由于 hobby 受到大家的肯定,相当多的朋友一起投入这个工作中!终于到了 1994 年将第一个完整的核心 Version 1.0 释出!并且造成目前的大流行.....由于 Linux kernel 的发展是由‘虚拟团队’所达成的,大家都是透过网路取得 Linux 的核心原始码,经由自己精心改造后再回传给 Linux 社群,进而一步一步的发展完成完整的 Linux 系统,至于 Torvalds 先生是这个集团中的发起者。由于这个群策群力的缘故, Torvalds 先生将 Linux 定为同样造福大家的 GNU 授权模式!

* 企鹅的来源:

1994年发表 Linux 正式核心 1.0 的时候,大家要 Linus Torvalds 想一只吉祥物,怪怪的 Torvalds 突然想到小时候去动物园被一只企鹅追着满地打滚~还被咬了一口!既然想不到其他的吉祥物了,干脆就以这支企鹅来当吉祥物算了!所以,呵呵!目前我们常常看到这一只企鹅就是这么来的咯!

什么是 distribution

好了,经由上面的说明,我们知道 Linux 是个‘作业系统’,而且他是 GNU 的授权模式,并且有个老大哥是 Unix 。不过,毕竟由 Torvalds 先生负责维护的 Linux 提供的仅是‘核心’与‘核心工具’的集合,对于需要更完整功能的作业系统来说,毕竟还不够完备,例如如果你要桌面程式,还得要加入 X-Window 系统对吧!?如果你要架设 WWW 还得加入伺服器软体对吧?所以,虽然 Linux 的核心已经提供了相当多的支援与工具程式,但毕竟还不足以构成一个很完整的作业系统。

好在,由于 Linux 的稳定性良好,并且可以在便宜的 x86 架构下的电脑平台运作,所以吸引了很多的套件商与自由软体的开发团队在这个 Linux 的核心上面开发相关的软体,例如有名的 sendmail, wu-ftp, apache 等等。此外,亦有一些商业公司发现这个商机,因此,这些商业公司或者是非营利性的工作团队,便将 Linux 核心、核心工具与相关的软体集合起来,并加入自己公司或团队的创意的系统管理模组与工具,而释出一套可以完整安装的作业系统,这个完整的 Linux 作业系统,我们就称呼他为 distribution,或者是中文所谓的‘安装套件’啰!当然啰,由于是基于 GNU 的架构下,因此各家公司所发行的光碟套件是可以在网路上面自由下载的。不过,如果想要有较佳的服务,那么购买该公司发行的光碟也是不错的!

不过,由于发展的 Linux 公司实在太多了,例如有名的 Red Hat, OpenLinux, Mandrake, Debian, SuSE 等等,所以很多人都很担心,如此一来每个 distribution 是否都不相同呢?这就不需要担心了,由于各个 distribution 都是架构在 Linux Kernel 下来发展属于自己公司风格的 distribution,因此大家都遵守 Linux Standard Base ( LSB ) 的规范,也就是说,各个 distribution 其实都是差不多的!反正用到的都是 Linux Kernel 啊!只是各个 distribution 里面所使用的各套件可能并不完全相同而已。所以啰,大家可以按照自己的喜好来选择 Linux 的 distribution 光碟啰!底下列出几个主要的 Linux 发行者网址:

* Red Hat: [url]http://www.redhat.com[/url]
* Mandrake: [url]http://www.linux-mandrake.com/en/[/url]
* Slackware: [url]http://www.slackware.com/[/url]
* SuSE: [url]http://www.suse.com/index_us.html[/url]
* OpenLinux: [url]http://www.caldera.com/[/url]
* Debian: [url]http://www.debian.org/[/url]
* Linpus: [url]http://www.linpus.com.tw/[/url]
* UniteLinux:[url]http://www.sco.com/unitedlinux/[/url]

当然发行套件者不仅于此,您可以查阅其他的 Linux 新闻来发现喔!而其中中文化较为有名的就属 CLE 这个套件发行者了!另外,台湾还有另一家 Linux 开发商,称为 Linpus (百资),有兴趣的话也可以到底下的网页上看看!

* CLE:[url]http://cle.linux.org.tw/[/url]
* 百资:[url]http://www.linpus.com.tw/[/url]

好了,那么哪一个安装套件比较好呢?!就如同 VBird 前面提到的,每一个发行者所使用的 Linux 核心其实是一样的,都是由 [url]www.kernel.org[/url] 开发出来的核心呀!所以其架构,甚至包括其档案放置的目录,都是大同小异的,基本上除了某些内容套件不太一样之外 ( 例如有人使用 wu-ftpd 有人使用 proftpd 等等 ) ,其他的档案架构与指令系统其实几乎都是相同的,因此我们不去探讨哪一个套件比较棒!而是要来介绍如何学习与使用一个套件!至于下载的地点,网友提供了一个相当棒的多种 Linux distributions 的下载网站:

[url]www.linuxiso.org[/url]

同时底下的网站还有各个著名的 Linux distribution 的比较!包括使用的热门情况、市场占有率、以及套件的相依程度等等:

[url]http://www.distrowatch.com/[/url]

Linux 的功能与优缺点

* Linux 的起源:

前面提到了,Linus Torvalds 先生一直以来就喜欢那个小小的作业系统核心,而核心是管理一个系统的最底层的东西,所有的硬体资源都是由 kernel 来管控的!但是,就如同前面说的,早期的 Unix 并不支援 x86 的个人电脑架构,一直到了 1991 年在 BBS 里面 Linus 先生贴了个小布告之后,才有了重大的转变:
Hello everybody out there using minix-
Im doing a (free) operation system (just a hobby,
wont be big and professional like gnu) for 386(486) AT clones.
这封 BBS 的邮件即是由当时还是芬兰的大学生 Linus Torvalds 所发表的,他说他修改了一个简单的作业系统核心,核心名称为 hobby,这个 hobby 的核心 ( Kernel ) 即为第一个 Linux 的核心系统!此外,由于他是基于 GNU 的协议而开发这个作业系统,所以他是 Free 的,任何人都可以下载使用!( 注:hobby 是个人兴趣,just a hobby, wont be big and professional like gnu,其意思是:仅为个人兴趣,不会玩得跟 gnu 那么大啦~~~)

Linus 所开发的这个 hobby 是基于 Unix 的系统所发展出来的,他将 Unix 里面的很多资料又加以简化,并且使之可以适用于 intel 主导的 x86 的系统下(当初的个人电脑系统为 386 与 486 架构),因此当初他所发表的这个最新的系统核心就被称为 linuss unix ,简称为 Linux !当然,由于这个核心很像是当时的 Unix 系统,因此也称为 Unix-like 系统啰!( 注:其实 Unix-Like 可以说是目前伺服器类型的作业系统的统称啦!因为,不论是 FreeBSD, BSD, Sun Unix, SCO Unix, HP Unix, Red Hat Linux, Mandrake Linux 等等,都是由同一个祖先‘Unix’来的,因此,这些咚咚都被统称为 Unix-Like 的作业系统啰! )

那么这个系统有什么特异功能呢?简单的说:

o 免费:由于他是基于 GPL ( General Public License ) 的架构之下,因此他是 Free 的,也就是任何人都可以免费的使用或者是修改其中的原始码的意思!这就是所谓的‘开放性架构’,这对科学界来说是相当重要的!因为很多的工程师由于特殊的需求,常常需要修改系统的原始码,使该系统可以符合自己的需求!而这个开放性的架构将可以满足各不同需求的工程师!因此当然就有可能越来越流行啰!

o 配备需求低廉:而他可以支援个人电脑的 X86 架构,系统资源不必像早先的 Unix 系统那般,仅适合于单一公司 ( 例如 Sun ) 设备!单就这一点来看,就可以造成很大的流行啰!

o 功能强大而稳定:而且由于功能并不会输给一些大型的 Unix 工作站,因此,近年来越来越多的公司或者是团体、个人投入这一个作业系统的开发与整合工作!

o 独立作业:另外,由于很多的软体套件逐渐被这套作业系统拿来使用,而很多套件软体也都在 Linux 这个作业系统上面进行发展与测试,因此, Linux 近来已经可以独力完成几乎所有的工作站或伺服器的服务了,例如 Web, Mail, Proxy, FTP.....。

所以,目前他已经是相当成熟的一套作业系统啰!而且不耗资源又免费,呵呵,可以说造成微软相当大的压力呀!此外,由于他的系统硬体要求很低,加上目前很多的人由于‘Intel 的阴谋’(呵呵!开玩笑的,因为 Tom 的硬体评论网站常常这样说 Intel 的不是!呵!很好笑!)而造成手边有相当多的淘汰掉的硬体配备, Linux 在这些被淘汰的硬体中就可以执行的相当的顺畅与稳定!因此也造成相当多朋友的关注啰!

这也是造成 Linux 成为最近几年来最受瞩目的作业系统之一,如前所述,他会受到瞩目的原因主要是因为他是‘free’的,就是免费的作业系统啦!然后他是开放性的系统,也就是你可以随时的取得程式的原始码,这对于程式开发工程师是很重要的!而且,虽然他是免费的,不过功能却很强大!另外, Linux 对于硬体的需求是很低的,这一点更造成他流行的主因,因为硬体的汰换率太快了,所以很多人手边都有一些很少在用的零件,这些零件组一组就可以用来跑 Linux 了,反正做一个工作站又不用使用到荧幕 ( 只要主机就可以啰 ) ,因此 Linux 就越来越流行啰!(插个嘴,也就是因为 Linux 具有 1.硬体需求低、 2.架构开放、 3.系统稳定性及保密性工能够强、 4.完全免费,所以造成一些所谓‘反微软联盟’的程式设计高手不断的开发新软体!以与 Microsoft 进行抗衡!)

* Linux 的优点:

那干嘛要使用 Linux 做为我们的主机系统呢?这是因为 Linux 有底下这些优点:

o 稳定的系统:Linux 本来就是建立在 Unix 上面发展出来的作业系统,因此,Linux 具有与 Unix 系统相似的的程式介面跟操作方式,当然也继承了 Unix 稳定并且有效率的特点。常听到安装 Linux 的主机连续运做一年以上而不曾当机、不必关机是稀松平常的事;

o 免费或少许费用:由于 Linux 是基于 GPL 的基础下的产物,因此任何人皆可以自由取得 Linux ,至于一些‘安装套件’的发行者,他们发行的安装光碟也仅需要些许费用即可获得!不同于 Unix 需要负担庞大的版权费用,当然也不同于微软需要一而再、再而三的更新你的系统,并且缴纳大量费用啰!

o 安全性、漏洞的修补:如果你常玩网路的话,那么你最常听到的应该是‘没有绝对安全的主机’!没错!不过 Linux 由于支援者日众,有相当多的热心团体、个人参与其中的开发,因此可以随时获得最新的安全资讯,并给予随时的更新,亦即是具有相对的较安全!

o 多工、多使用者:与 Windows 系统不同的, Linux 主机上可以同时允许多人上线来工作,并且资源的分配较为公平,比起 Windows 的单人假多工系统要稳定的多啰! 这个多人多工可是 Unix-Like 上面相当好的一个功能,怎么说呢?你可以在一部 Linux 主机上面规划出不同等级的使用者,而且每个使用者登入系统时的工作环境都可以不相同,此外,还可以允许不同的使用者在同一个时间登入主机,以同时使用主机的资源。

o 使用者与群组的规划:在 Linux 的机器中,档案的属性可以分为‘可读、可写、可执行’等参数来定义一个档案的适用性,此外,这些属性还可以分为三个种类,分别是‘档案拥有者、档案所属群组、其他非拥有者与群组者’。这对于专案计划或者其他计划开发者具有相当良好的系统保密性。

o 相对比较不耗资源的系统:Linux 只要一部 p-100 以上等级的电脑就可以安装并且使用愉快啰!还不需要到 P-III 等级的电脑呢!不过,如果你要架设的是属于大型的主机(服务上百人以上的主机系统),那么就需要比较好一点的机器了。不过,目前市面上任何一款个人电脑均可以达到这一个要求啰!

* Linux 的缺点:

反正 Linux 好处说不完啦!不过虽然 Linux 具有这样多的好处,但是他先天上有一个足以致命的地方,使他的普及率受到很大的限制,就是 Linux 需要使用 ‘指令列’ 的终端机模式进行系统的管理!虽然近年来有很多的图形介面开发使用在 Linux 上面,但毕竟要熟悉 Linux 还是以指令列来使用是比较好的,因此要接受 Linux的玩家必须比较要能熟悉对电脑下指令的行为,而不是用滑鼠点一点 icon 就行了!不过如果只是要架一些简单的小站呢?是不是大家都可以做的到?没错!其实只要对 Linux 做一些小小的设定就可以架站了!

o 没有特定的支援厂商:因为所有的套件都是免费的,自然也就没有专人会到府服务啦!不过,这点倒是不需要担心,因为拜网路风行之赐,你要问的问题几乎在网路上都可以找到答案喔!看你有没有用心去找就是了!

o 图形介面作的还不够好:其实是因为 VBird 不玩 X-window 啦,所以也不知道目前发展到怎样的一个地步了!基本上 VBird 常说的一句话就是:‘Windows 上面有的咚咚 Linux 上面也一定可以找的到!,但 Linux 有的服务 Windows 可不见得有喔!’只不过,您可得自己找到自己想要的介面啰!

一些名词(GNU, GPL ??)

* Linux Standard Base ( LSB )

由于 Linux 是一个没有‘规格品’样式的新鲜玩意儿,如果大家都自己玩自己的,那么可想而知的是,未来想要在 Linux 这个作业系统上面发展软体与硬体的厂商一定会无所适从的!为了让软体开发商、与硬体发展者有一个依循的方向,因此而有 Linux Standard Base 这个玩意儿的诞生!所以,各个 distribution 也都要遵循 LSB 上面的规范,软硬体发展者也都会依循 LSB ,所以啰,我们才会常常说,各大 distribution 虽然在提供的工具与创意上面有所不同,但是基本上,他们的 Linux 架构都是很类似的!因此,你只要玩一套 Linux distribution 也就够了!其他的 distribution 应该就难不倒你啰!

* Unix-Like

其实 Unix-Like 可以说是目前伺服器类型的作业系统的统称啦!因为,不论是 FreeBSD, BSD, Sun Unix, SCO Unix, HP Unix, Red Hat Linux, Mandrake Linux 等等,都是由同一个祖先‘Unix’来的,因此,这些咚咚都被统称为 Unix-Like 的作业系统啰!目前,很多的软体在开发的时候,基本上,都已经可以是用在各个 Unix-Like 的平台上的!了不起,更改一些原始码就可以适用你所在的平台啰!

* 伺服器、工作站、终端机...

由于网路的盛行,我们或许常常会听到一些名词ㄋㄟ~所以,底下先来介绍几个简单的网路名词吧! ^_^,来认识一下什么是 伺服器 ( Server )、工作站 ( Workstation ) 与终端机 ( Ternianl )?简单的来说,你可以这样认为:

o 伺服器 ( Server ):提供 Internet 一种以上的网路服务的主机,例如 yahoo 提供的是 WWW 的服务,那么 yahoo 就可以称之为 伺服器 了!那么,你自己架设一台 mail server 呢?呵呵!那也是一个小型的伺服器啰!所以,你必须要清楚的知道,伺服器是有规模大小之分的!目前一部 Linux 上面就可以架设多个伺服器软体啰!例如 WWW 伺服器的 Apache 软体、 FTP 伺服器的 Wu-ftp 软体等等的;

o 工作站 ( Workstation ) :基本上,工作站可以视为仅提供一群特定人士,作为数值分析、科学用途的机器。例如我们研究室有一部 Sun 的机器,他仅提供我们研究室内部几部电脑的连线,当我们有需要使用到 Fortran 这个程式语言时,就连线进入 Sun 这部机器,并在上面进行我们所需要的计算工作!这个就是工作站啦。而工作站与伺服器的差别,大概就在于有没有提供 internet 上面的服务而已,例如,如果我将 Sun 上面的 mail server 开启之后,那么这部机器就可以称之为伺服器 了!同时也是我们的工作站喔!当然,更广义的定义是,只要是没有对 Internet 上面提供网路服务的,那就是工作站了!这当然也就包含所谓的终端机!

o 终端机 ( Terminal ) :简单的说,就是 end-user ( 就是你啦 ) 前面的那部电脑!呵呵,例如我都是使用我的工作机 ( Windows ) 连上我们的主机来工作,那么这一部 Windows 的电脑,就可以称为 terminal 机器啰!不过,更狭义的来说,‘终端机’本身应该是不具备任何可以作业的软体的,在终端机上面一定要连上 Server 之后,才能进行各项作业!那才是最狭义的终端机啰!例如我们前面说过的早期的大型主机连线模式!

大致上的分别可以用上面的观点来看!

* 几个常见的授权模式与定义

说说几个常见的授权模式吧:

o GNU General Public License :这个可以由刚刚的说明了解,他主要定义在‘自由软体’上面,任何挂上 GPL 授权的软体,需要公布其原始码 ( Open Source ),GPL 有几个主要的大方向:
1. 任何个人或公司均可释出自由软体 ( free software );
2. 任何释出自由软体的个人或公司,均可由自己的服务来收取适当的费用;
3. 该软体的原始码 ( Source Code ) 需要随软体附上,并且是可公开发表的;
4. 任何人均可透过任何正常管道取得此一自由软体,且均可取得此一授权模式。

o Freeware :不同于 Free software , Freeware 为‘免费软体’而非‘自由软体!’虽然他是免费的软体,但是不见得要公布其原始码,端看释出者的意见啰!这个东西与 Open Source 毕竟是不太相同的东西喔!此外,目前很多标榜 免费软体 的程式很多都有小问题!例如假借免费软体的名义,实施使用者资料窃取的目的!所以‘来路不明的软体请勿安装!’

o Shareware :共享软体这个名词就有趣了!与自由软体有点类似的是, Shareware 在使用初期,他也是免费的,但是,到了所谓的‘试用期限’之后,您就必须要选择‘付费后继续使用’或者‘将他移除’的宿命~通常,这些共享软体都会自行撰写失效程式,让你在试用期限之后就无法使用该软体。

o Berkeley Software Distribution (BSD) :使用 BSD source code 最常接触到的就是 BSD 授权模式了!这个授权模式其实与 GPL 很类似,而其精神也与 Open Source 相呼应呢!

o Open Source :Open source 表示软体释出时,一定伴随着原始码的释出喔!通常他有几个好处:
1. 程式设计师通常会等到程式成熟之后才会释出 ( 免得被笑, ^_^ ),所以通常程式在雏形的时候,就已经具有相当的优良体质;
2. Open Source 的精神,相信当程式原设计人将程式原始码释出之后,其他的程式设计师接受这份原始码之后,由于需要将程式改成自己所需的样式,所以会经由本身的所学来加以改良,并从中加以改良与除虫,所以程式的 debug 功能会比传统的 close source 来的快!
3. 由于程式是伴随原始码的,因此,系统将会不易存在鲜为人知的木马程式或一些安全漏洞,相对而言,会比较更加的安全!

o Close Source :程式的核心是封闭的,优点是有专人维护,您不需要去更动他;缺点则是灵活度大打折扣,使用者无法变更该程式成为自己想要的样式,此外,若有木马程式或者安全漏洞,将会花上相当长的一段时间来除错!
本帖最近评分记录: 1 条评分 派派币 +15
  • wq465

    派派币 +15

    整了一天,辛苦了!

ghostya1017

ZxID:1331246


等级: 家喻户晓
原创音乐
举报 只看该作者 沙发   发表于: 2009-01-12 0
Re:教学  解释什么是 Linux ?什么是作业系统?
Linux 指令大全(1)
________________________________________


cat cd
chmod chown
cp cut

名称:cat
使用权限:所有使用者
使用方式:cat [-AbeEnstTuv] [help] [version] fileName
说明:把档案串连接后传到基本输出(荧幕或加 > fileName 到另一个档案)
参数:
-n 或 number 由 1 开始对所有输出的行数编号
-b 或 number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 show-nonprinting

范例:
cat -n textfile1 > textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3

名称 : cd
使用权限 : 所有使用者

使用方式 : cd [dirName]

说明 : 变换工作目录至 dirName。 其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home directory (也就是刚 login 时所在的目录)。

另外,"~" 也表示为 home directory 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。

范例 : 跳到 /usr/bin/ :
cd /usr/bin

跳到自己的 home directory :
cd ~

跳到目前目录的上上两层 :
cd ../..



指令名称 : chmod
使用权限 : 所有使用者

使用方式 : chmod [-cfvR] [help] [version] mode file...

说明 : Linux/Unix 的档案存取许可权分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所存取。

把计 :

mode : 许可权设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
+ 表示增加许可权、- 表示取消许可权、= 表示唯一设定许可权。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
-c : 若该档案许可权确实已经更改,才显示其更改动作
-f : 若该档案许可权无法被更改也不要显示错误讯息
-v : 显示许可权变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的许可权变更(即以递回的方式逐个变更)
help : 显示辅助说明
version : 显示版本

范例 :将档案 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt

将档案 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt

将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :
chmod ug+w,o-w file1.txt file2.txt

将 ex1.py 设定为只有该档案拥有者可以执行 :
chmod u+x ex1.py

将目前目录下的所有档案与子目录皆设为任何人可读取 :
chmod -R a+r *

此外chmod也可以用数位来表示许可权如 chmod 777 file
语法为:chmod abc file

其中a,b,c各为一个数位,分别表示User、Group、及Other的许可权。

r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。

范例:
chmod a=rwx file


chmod 777 file

效果相同
chmod ug=rwx,o=x file


chmod 771 file

效果相同





若用chmod 4755 filename可使此程式具有root的许可权


指令名称 : chown
使用权限 : root

使用方式 : chmod [-cfhvR] [help] [version] user[:group] file...

说明 : Linux/Unix 是多人多工作业系统,所有的档案皆有拥有者。利用 chown 可以将档案的拥有者加以改变。一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有许可权可以改变别人的档案拥有者,也没有许可权可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的许可权。

把计 :

user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group)-c : 若该档案拥有者确实已经更改,才显示其更改动作-f : 若该档案拥有者无法被更改也不要显示错误讯息-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案-v : 显示拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)help : 显示辅助说明version : 显示版本

范例 :
将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie :
chown jessie:users file1.txt

将目前目录下的所有档案与子目录的拥有者皆设为 users 群体的使用者 lamport :
chmod -R lamport:users *


名称:cp
使用权限:所有使用者

使用方式:

cp [options] source dest
cp [options] source... directory

说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。

把计

-a 尽可能将档案状态、许可权等资料都照原状予以复制。
-r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。
-f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制。
范例:
将档案 aaa 复制(已存在),并命名为 bbb :
cp aaa bbb

将所有的C语言程式拷贝至 Finished 子目录中 :
cp *.c Finished



名称:cut

使用权限:所有使用者

用法:cut -cnum1-num2 filename

说明:显示每行从开头算起 num1 到 num2 的文字。

范例:

shell>> cat example
test2
this is test1
shell>> cut -c0-6 example ## print 开头算起前 6 个字元
test2
this i


名称 : find
用法 : find
使用说明 :

将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、许可权等不同资讯的组合,只有完全相符的才会被列出来。

find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

-mount, -xdev : 只检查和指定目录在同一个档案系统下的档案,避免列出其他档案系统中的档案
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比档案 file 更晚被读取过的档案
-atime n : 在过去 n 天过读取过的档案
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比档案 file 更新的档案
-ctime n : 在过去 n 天过修改过的档案
-empty : 空的档案-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的档案,ipath 会忽略大小写
-name name, -iname name : 档案名称符合 name 的档案。iname 会忽略大小写
-size n : 档案大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 档案类型是 c 的档案。
d: 目录
c: 字型装置档案
b: 区块装置档案
p: 具名贮列
f: 一般档案
l: 符号连结
s: socket
-pid n : process id 是 n 的档案

你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
范例:
将目前目录及其子目录下所有延伸档名是 c 的档案列出来。
# find . -name "*.c"


将目前目录其其下子目录中所有一般档案列出
# find . -ftype f


将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出
# find . -ctime -20



名称:less

使用权限:所有使用者

使用方式:

less [Option] filename

说明:
less 的作用与 more 十分相似,都可以用来浏览文字档案的内容,不同的是 less 允许使用者往回卷动
以浏览已经看过的部份,同时因为 less 并未在一开始就读入整个档案,因此在遇上大型档案的开启时,会比一般的文书编辑器(如 vi)来的快速。


范例:


指令名称 : ln
使用权限 : 所有使用者

使用方式 : ln [options] source dist,其中 option 的格式为 :

[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[help] [version] []
说明 : Linux/Unix 档案系统中,有所谓的连结(link),我们可以将其视为档案的别名,而连结又可分为两种 : 硬连结(hard link)与软连结(symbolic link),硬连结的意思是一个档案可以有多个名称,而软连结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬连结是存在同一个档案系统中,而软连结却可以跨越不同的档案系统。
ln source dist 是产生一个连结(dist)到 source,至于使用硬连结或软链结则由参数决定。

不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。


-f : 链结时先将与 dist 同档名的档案删除-d : 允许系统管理者硬链结自己的目录-i : 在删除与 dist 同档名的档案时先进行询问-n : 在进行软连结时,将 dist 视为一般的档案-s : 进行软链结(symbolic link)-v : 在连结之前显示其档名-b : 将在链结时会被覆写或删除的档案进行备份-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾-V METHOD : 指定备份的方式help : 显示辅助说明version : 显示版本
范例 :
将档案 yy 产生一个 symbolic link : zz
ln -s yy zz

将档案 yy 产生一个 hard link : zz
ln yy xx



名称:locate
使用权限:所有使用者
使用方式: locate [-q] [-d ] [database=]
locate [-r ] [regexp=]
locate [-qv] [-o ] [output=]
locate [-e ] [-f ] <[-l ] [-c]
<[-U ] [-u]>
locate [-Vh] [version] [help]
说明:
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的资料库,之后当寻找时就只需查询这个资料库,而不必实际深入档案系统之中了。

在一般的 distribution 之中,资料库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用

# locate your_file_name

的型式就可以了。 参数:
-u
-U

建立资料库,-u 会由根目录开始,-U 则可以指定开始的位置。

-e


排除在寻找的范围之外。

-l
如果 是 1.则启动安全模式。在安全模式下,使用者不会看到许可权无法看到的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的许可权资料。

-f
将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在资料库中。

-q
安静模式,不会显示任何错误讯息。

-n
至多显示 个输出。

-r
使用正规运算式 做寻找的条件。

-o
指定资料库存的名称。

-d

指定资料库的路径

-h
显示辅助讯息

-v
显示更多的讯息

-V
显示程式的版本讯息 范例:

locate chdrv : 寻找所有叫 chdrv 的档案
locate -n 100 a.out : 寻找所有叫 a.out 的档案,但最多只显示 100 个
locate -u : 建立资料库





名称 : ls
使用权限 : 所有使用者

使用方式 : ls [-alrtAFR] [name...]

说明 : 显示指定工作目录下之内容(列出目前工作目录所含之档案及子目录)。


-a 显示所有档案及目录 (ls内定将档案名或目录名称开头为"."的视为隐藏档,不会列出)
-l 除档案名称外,亦将档案型态、许可权、拥有者、档案大小等资讯详细列出
-r 将档案以相反次序显示(原定依英文字母次序)
-t 将档案依建立时间之先后次序列出
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的档案名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 若目录下有档案,则以下之档案亦皆依序列出

范例:
列出目前工作目录下所有名称是 s 开头的档案,愈新的排愈后面 :
ls -ltr s*

将 /bin 目录以下所有目录及档案详细资料列出 :
ls -lR /bin

列出目前工作目录下所有档案及目录;目录于名称后加 "/", 可执行档于名称后加 "*" :
ls -AF

名称:more
使用权限:所有使用者
使用方式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
说明:类似 cat ,不过会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。
参数:-num 一次显示的行数
-d 提示使用者,在画面下方显示 [Press space to continue, q to quit.] ,如果使用者按错键,则会显示 [Press h for instructions.] 而不是 哔 声
-l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除荧幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/ 在每个档案显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的档案,可为复数个数
范例:
more -s testfile 逐页显示 testfile 之档案内容,如有连续两行以上空白行则以一行空白行显示。
more +20 testfile 从第 20 行开始显示 testfile 之档案内容。


名称:mv
使用权限:所有使用者

使用方式:

mv [options] source dest
mv [options] source... directory
说明:将一个档案移至另一档案,或将数个档案移至另一目录。
参数:-i 若目的地已有同名档案,则先询问是否覆盖旧档。

范例:

将档案 aaa 更名为 bbb :
mv aaa bbb

将所有的C语言程式移至 Finished 子目录中 :
mv -i *.c



名称:rm
使用权限:所有使用者

使用方式:rm [options] name...

说明:删除档案及目录。

把计

-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
范例:
删除所有C语言程式档;删除前逐一询问确认 :
rm -i *.c

将 Finished 子目录及子目录中所有档案删除 :
rm -r Finished



名称:rmdir
使用权限:于目前目录有适当许可权的所有使用者

使用方式: rmdir [-p] dirName

说明: 删除空的目录。

参数: -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

范例:

将工作目录下,名为 AAA 的子目录删除 :
rmdir AAA

在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。
rmdir -p BBB/Test



名称:split
使用权限:所有使用者

使用方式:split [OPTION] [INPUT [PREFIX]]

说明:

将一个档案分割成数个。而从 INPUT 分割输出成固定大小的档案,其档名依序为 PREFIXaa, PREFIXab...;PREFIX 预设值为 `x。若没有 INPUT 档或为 `-,则从标准输入读进资料。

匡兜

-b, bytes=SIZE

SIZE 值为每一输出档案的大小,单位为 byte。
-C, line-bytes=SIZE

每一输出档中,单行的最大 byte 数。
-l, lines=NUMBER

NUMBER 值为每一输出档的列数大小。
-NUMBER

与 -l NUMBER 相同。
verbose

于每个输出档被开启前,列印出侦错资讯到标准错误输出。
help

显示辅助资讯然后离开。
version

列出版本资讯然后离开。
SIZE 可加入单位: b 代表 512, k 代表 1K, m 代表 1 Meg。

范例:

PostgresSQL 大型资料库备份与回存:

因 Postgres 允许表格大过你系统档案的最大容量,所以要将表格 dump 到单一的档案可能会有问题,使用 split进行档案分割。


% pg_dump dbname | split -b 1m - filename.dump.



重新载入


% createdb dbname
% cat filename.dump.* | pgsql dbname



名称:touch
使用权限:所有使用者

使用方式:
touch [-acfm]
[-r reference-file] [file=reference-file]
[-t MMDDhhmm[[CC]YY][.ss]]
[-d time] [date=time] [time={atime,access,use,mtime,modify}]
[no-create] [help] [version]
file1 [file2 ...]


说明:
touch 指令改变档案的时间记录。 ls -l 可以显示档案的时间记录。


参数:
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
no-create 不会建立新档案。
help 列出指令格式。
version 列出版本讯息。


范例:


最简单的使用方式,将档案的时候记录改为现在的时间。若档案不存在,系统会建立一个新的档案。

touch file
touch file1 file2

将 file 的时间记录改为 5 月 6 日 18 点 3 分,西元两千年。时间的格式可以参考 date 指令,至少需输入 MMDDHHmm ,就是月日时与分。

touch -c -t 05061803 file
touch -c -t 050618032000 file

将 file 的时间记录改变成与 referencefile 一样。

touch -r referencefile file

将 file 的时间记录改成 5 月 6 日 18 点 3 分,西元两千年。时间可以使用 am, pm 或是 24 小时的格式,日期可以使用其他格式如 6 May 2000 。

touch -d "6:03pm" file
touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file


Linux指令分类列表


类别  :  通讯
指令名称     功能
ftp             档案传输协定
login           登入
rlogin          登入到远端系统
rsh             执行远端系统的shell或某个命令
talk            与其他终端机互动交换讯息
telnet        连接其他系统
tftp            简易档案传输协动
uudevode    解开以uuencode编码过的档案
uuencode    将二元档编码成可以邮递的格式
vacation      自动回覆邮件

类别 : 比较
指令名称     功能
cmp            逐位元组比较两个档案
comm         比较两个以排序过的档案里的项目
diff              逐行比较两个档案的内容
diff3            比较三个档案的内容

类别 : 档案管理
指令名称      功能
cat              转接档案、或显示档案内容
chfn            改变finger、email...的使用者资讯
cksum         计算加总查核码(checksum)
chmod         改变档案的存取模式
chsh            改变login shell
cp               复制档案
csplit            将档案从指定的位置切开
dd               复制档案在磁碟的原始形式
file               判断档案的型态
head            显示档案开头的前几行内容
less              分页显示档案内容
ln                建立档案别名
ls                列出档案或目录
merge          将两个不同档案的内容差异合并到另一个档案
mkdir           建立目录
more           分页显示档案内容
mv               更改或移动档案或目录
newgrp        改变使用者目前所属的群组
pwd            印出工作目录
rcp             将档案复制到远端系统
rm              移除档案
rmdir           移除目录
split             将档案平均分割成几个等分
tail              显示档案的最后几行内容
wc              计算行数、单字数、以及字元数

类别 :  列印
指令名称       功能
lpq               显示列印工作的状态
lpr                离线列印
lprm             移除列印工作
lpstat           取得印表机状态
pr               格式化并分页以供列印

类别 : 程式设计
指令名称       功能
ar                建立及更新函式库档案
as               组合语言的组译器,会产生目的档
bison            产生解析表
cpp              c 程式码的前端处理器
flex              词汇分析器
g++             GNU的C++编译器
gcc              GNU的C编译器
ld                 目的档连结器
m4               巨集处理器
ranlib            重新产生archive的符号表(symbol table)
rpchen         将RPC 转译成C程式码
yacc             产生解析表

类别 : 程式维护
指令名称       功能
cvs               管理原始码档的不同版本
etags            产生给Emacs编辑器使用的符号表
gctags          产生给vi编辑器使用的符号表
gdb              GNU除错器
gprof             显示目的档的profile资料
imake            产生给make使用的Makefile
make            维护、更新、重新产生相关的程式与档案
nm               显示目的档之符号表
patch           将修补档套用到原始码档
rcs               管理原始码档的不同版本
size               印出目的档之大小
strace            追踪系统呼叫与信号
strip              将符号从目的档中除去

类别 :  搜寻
指令名称       功能
apropos         搜寻符合某主题的manpage
egrep           grep的延伸版本
fgrep            在档案中搜寻纯文字字串
find              在系统中搜寻档名
grep             找出档案中符合文字样式的部份
strings           找出二元档中符合文字样式的部份
whereis         找出命令的位置

类别 : shell程式设计
指令名称        功能
echo              将其命令列引数印到输出
expr              进行算数与比较运算
printf             格式化并印出其命令列引数
sleep             在处理过程中暂停
test               测试某条件

类别 : 储存
指令名称         功能
bzip2              压缩档案以释放出空间(.bz2)
cpio               建立或解开被存档 (archive)
gunzip            展开压缩档(.gz与.z)
gzip                压缩档案以释放出空间(.gz)
shar               建立shell archive
tar                 将胆案复制到备份媒体中,或从备份媒体中还原档案
zcat               显示压缩档的内容

类别 : 系统状态
指令名称        功能
at                 在稍后的时间执行命令
atq               显示由 at 所安排的工作
atrm             移除 at 所安排的工作
chgrp            改变档案的所属群组
chown           改变档案的拥有者
crontab          自动执行命令
date             显示或设定日期
df                显示可用的磁碟空间
du                显示磁碟的使用量
env              显示环境变数
finger           显示关于使用者的资讯
kill                终止某个正在执行的命令
printenv       显示环境变数
ps                显示行程( Process)
stty              设定或显示终端机的设定值
who             显示有哪些人登入的系统



Linux 指令大全(2)
________________________________________
2001-02-28 14:43:03

名称 : at
使用权限 : 所有使用者

使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME

说明 : at 可以让使用者指定在 TIME 这个特定时刻执行某个程式或指令,TIME 的格式是 HH:MM其中的 HH 为小时,MM 为分钟,甚至你也可以指定 am, pm, midnight, noon, teatime(就是下午 4 点钟)等口语词。

如果想要指定超过一天内的时间,则可以用 MMDDYY 或者 MM/DD/YY 的格式,其中 MM 是分钟,DD 是第几日,YY 是指年份。另外,使用者甚至也可以使用像是 now + 时间间隔来弹性指定时间,其中的时间间隔可以是 minutes, hours, days, weeks

另外,使用者也可指定 today 或 tomorrow 来表示今天或明天。当指定了时间并按下 enter 之后,at 会进入交谈模式并要求输入指令或程式,当你输入完后按下 ctrl+D 即可完成所有动作,至于执行的结果将会寄回你的帐号中。

把计 :

-V : 印出版本编号
-q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c... z 以及 A, B, ... Z 共 52 个
-m : 即使程式/指令执行完成后没有输出结果, 也要寄封信给使用者
-f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已经完成但尚未删除的指定

例子 :
三天后的下午 5 点钟执行 /bin/ls :
at 5pm + 3 days /bin/ls

三个星期后的下午 5 点钟执行 /bin/ls :
at 5pm + 2 weeks /bin/ls

明天的 17:20 执行 /bin/date :
at 17:20 tomorrow /bin/date

1999 年的最后一天的最后一分钟印出 the end of world !
at 23:59 12/31/1999 echo the end of world !




名称:cal

使用权限:所有使用者

使用方式:cal [-mjy] [month [year]]

说明:

显示日历。若只有一个参数,则代表年份(1-9999),显示该年的年历。年份必须全部写出:``cal 89 将不会是显示 1989 年的年历。使用两个参数,则表示月份及年份。若没有参数则显示这个月的月历。
1752 年 9 月第 3 日起改用西洋新历,因这时大部份的国家都采用新历,有 10 天被去除,所以该月份的月历有些不同。在此之前为西洋旧历。

匡兜

-m : 以星期一为每周的第一天方式显示。
-j : 以凯撒历显示,即以一月一日起的天数显示。
-y : 显示今年年历。

范例:

cal : 显示本月的月历。



[root@mylinux /root]# date
Tue Aug 15 08:00:18 CST 2000
[root@mylinux /root]# cal
August 2000
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

[root@mylinux /root]#


cal 2001 : 显示西元 2001 年年历。

[root@mylinux /root]# cal 2001
2001

January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24
28 29 30 31 25 26 27 28 25 26 27 28 29 30 31

April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 5 1 2
8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9
15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16
22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23
29 30 27 28 29 30 31 24 25 26 27 28 29 30

July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 1
8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8
15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15
22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22
29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29
30
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1
7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
30 31

[root@mylinux /root]#





cal 5 2001 : 显示西元 2001 年 5 月月历。



[root@mylinux /root]# cal 5 2001
May 2001
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

[root@mylinux /root]#





cal -m : 以星期一为每周的第一天方式,显示本月的月历。



[root@mylinux /root]# cal -m
August 2000
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

[root@mylinux /root]#





cal -jy : 以一月一日起的天数显示今年的年历。



[root@mylinux /root]# cal -jy
2000

January February
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
1 32 33 34 35 36
2 3 4 5 6 7 8 37 38 39 40 41 42 43
9 10 11 12 13 14 15 44 45 46 47 48 49 50
16 17 18 19 20 21 22 51 52 53 54 55 56 57
23 24 25 26 27 28 29 58 59 60
30 31
March April
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
61 62 63 64 92
65 66 67 68 69 70 71 93 94 95 96 97 98 99
72 73 74 75 76 77 78 100 101 102 103 104 105 106
79 80 81 82 83 84 85 107 108 109 110 111 112 113
86 87 88 89 90 91 114 115 116 117 118 119 120
121
May June
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
122 123 124 125 126 127 153 154 155
128 129 130 131 132 133 134 156 157 158 159 160 161 162
135 136 137 138 139 140 141 163 164 165 166 167 168 169
142 143 144 145 146 147 148 170 171 172 173 174 175 176
149 150 151 152 177 178 179 180 181 182

July August
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
183 214 215 216 217 218
184 185 186 187 188 189 190 219 220 221 222 223 224 225
191 192 193 194 195 196 197 226 227 228 229 230 231 232
198 199 200 201 202 203 204 233 234 235 236 237 238 239
205 206 207 208 209 210 211 240 241 242 243 244
212 213
September October
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
245 246 275 276 277 278 279 280 281
247 248 249 250 251 252 253 282 283 284 285 286 287 288
254 255 256 257 258 259 260 289 290 291 292 293 294 295
261 262 263 264 265 266 267 296 297 298 299 300 301 302
268 269 270 271 272 273 274 303 304 305

November December
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
306 307 308 309 336 337
310 311 312 313 314 315 316 338 339 340 341 342 343 344
317 318 319 320 321 322 323 345 346 347 348 349 350 351
324 325 326 327 328 329 330 352 353 354 355 356 357 358
331 332 333 334 335 359 360 361 362 363 364 365
366

[root@mylinux /root]#




名称 : crontab
使用权限 : 所有使用者

使用方式 :

crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }
说明 :
crontab 是用来让使用者在固定时间或固定间隔执行程式之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其许可权(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

餐数 :

-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-r : 删除目前的时程表
-l : 列出目前的时程表

时程表的格式如下 :
f1 f2 f3 f4 f5 program

其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其余类推

使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
例子 :

每月每天每小时的第 0 分钟执行一次 /bin/ls :
0 7 * * * /bin/ls

在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup

周一到周五每天下午 5:00 寄一封信给 [email protected] :
0 17 * * 1-5 mail -s "hi" [email protected] < /tmp/maildata

每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
20 0-23/2 * * * echo "haha"

注意 :

当程式在你所指定的时间执行后,系统会寄一封信给你,显示该程式执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可。

名称 : date
使用权限 : 所有使用者

使用方式 :

date [-u] [-d datestr] [-s datestr] [utc] [universal] [date=datestr] [set=datestr] [help] [version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

说明 :

date 可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下 :

时间方面 :

% : 印出 %
%n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
%S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区

日期方面 :
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期与时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位元数位 (00.99)
%Y : 完整年份 (0000..9999)

若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位元数位,YY 为年份后两位元数位,ss 为秒数
把计 :

-d datestr : 显示 datestr 中所设定的时间 (非系统时间)
help : 显示辅助讯息
-s datestr : 将系统时间设为 datestr 中所设定的时间
-u : 显示目前的格林威治时间
version : 显示版本编号

例子 :
显示时间后跳行,再显示目前日期 :
date +%T%n%D

显示月份与日数 :
date +%B %d

显示日期与设定时间(12:34:56) :
date date 12:34:56

注意 :

当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date +%-H:%-M:%-S 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得许可权者(比如说 root)才能设定系统时间。

当你以 root 身份更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。


名称 : sleep
使用权限 : 所有使用者

使用方式 : sleep [help] [version] number[smhd]

说明 : sleep 可以用来将目前动作延迟一段时间

参数说明 :

help : 显示辅助讯息
version : 显示版本编号
number : 时间长度,后面可接 s、m、h 或 d
其中 s 为秒,m 为 分钟,h 为小时,d 为日数

例子 :
显示目前时间后延迟 1 分钟,之后再次显示时间 :
date;sleep 1m;date



名称: time
使用权限: 所有使用者

使用方式: time [options] COMMAND [arguments]

说明: time 指令的用途,在于量测特定指令执行时所需消耗的时间及系统资源等资讯。例如 CPU 时间、记忆体、输入输出等等。需要特别注意的是,部分资讯在 Linux 上显示不出来。这是因为在 Linux 上部分资源的分配函式与 time 指令所预设的方式并不相同,以致于 time 指令无法取得这些资料。

把计

-o or output=FILE
设定结果输出档。这个选项会将 time 的输出写入 所指定的档案中。如果档案已经存在,系统将覆写其内容。
-a or append
配合 -o 使用,会将结果写到档案的末端,而不会覆盖掉原来的内容。
-f FORMAT or format=FORMAT
以 FORMAT 字串设定显示方式。当这个选项没有被设定的时候,会用系统预设的格式。不过你可以用环境变数 time 来设定这个格式,如此一来就不必每次登入系统都要设定一次。
一般设定上,你可以用
t
表示跳栏,或者是用
n
表示换行。每一项资料要用 % 做为前导。如果要在字串中使用百分比符号,就用 。(学过 C 语言的人大概会觉得很熟悉)
time 指令可以显示的资源有四大项,分别是:

Time resources
Memory resources
IO resources
Command info

详细的内容如下:


Time Resources
E 执行指令所花费的时间,格式是:[hour]:minute:second。请注意这个数位并不代表实际的 CPU 时间。
e 执行指令所花费的时间,单位是秒。请注意这个数位并不代表实际的 CPU 时间。
S 指令执行时在核心模式(kernel mode)所花费的时间,单位是秒。
U 指令执行时在使用者模式(user mode)所花费的时间,单位是秒。
P 执行指令时 CPU 的占用比例。其实这个数位就是核心模式加上使用者模式的 CPU 时间除以总时间。


Memory Resources
M 执行时所占用的实体记忆体的最大值。单位是 KB
t 执行时所占用的实体记忆体的平均值,单位是 KB
K 执行程式所占用的记忆体总量(stack+data+text)的平均大小,单位是 KB
D 执行程式的自有资料区(unshared data area)的平均大小,单位是 KB
p 执行程式的自有堆叠(unshared stack)的平均大小,单位是 KB
X 执行程式间共用内容(shared text)的平均值,单位是 KB
Z 系统记忆体页的大小,单位是 byte。对同一个系统来说这是个常数


IO Resources
F 此程式的主要记忆体页错误发生次数。所谓的主要记忆体页错误是指某一记忆体页已经置换到置换档(swap file)中,而且已经分配给其他程式。此时该页的内容必须从置换档里再读出来。
R 此程式的次要记忆体页错误发生次数。所谓的次要记忆体页错误是指某一记忆体页虽然已经置换到置换档中,但尚未分配给其他程式。此时该页的内容并未被破坏,不必从置换档里读出来
W 此程式被交换到置换档的次数
c 此程式被强迫中断(像是分配到的 CPU 时间耗尽)的次数
w 此程式自愿中断(像是在等待某一个 I/O 执行完毕,像是磁碟读取等等)的次数
I 此程式所输入的档案数
O 此程式所输出的档案数
r 此程式所收到的 Socket Message
s 此程式所送出的 Socket Message
k 此程式所收到的信号 ( Signal )数量


Command Info
C 执行时的参数以及指令名称
x 指令的结束代码 ( Exit Status )




-p or portability
这个选项会自动把显示格式设定成为:
real %e
user %U
sys %S
这么做的目的是为了与 POSIX 规格相容。
-v or verbose
这个选项会把所有程式中用到的资源通通列出来,不但如一般英文语句,还有说明。对不想花时间去熟习格式设定或是刚刚开始接触这个指令的人相当有用。

范例:
利用下面的指令
time -v ps -aux

我们可以获得执行 ps -aux 的结果和所花费的系统资源。如下面所列的资料:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 1096 472 ? S Apr19 0:04 init
root 2 0.0 0.0 0 0 ? SW Apr19 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Apr19 0:00 [kpiod]
......
root 24269 0.0 1.0 2692 996 pts/3 R 12:16 0:00 ps -aux

Command being timed: "ps -aux"
User time (seconds): 0.05
System time (seconds): 0.06
Percent of CPU this job got: 68%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.16
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 238
Minor (reclaiming a frame) page faults: 46
Voluntary context switches: 0
Involuntary context switches: 0
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0



名称: uptime
使用权限: 所有使用者
使用方式: uptime [-V]
说明: uptime 提供使用者下面的资讯,不需其他参数:

现在的时间
系统开机运转到现在经过的时间
连线的使用者数量
最近一分钟,五分钟和十五分钟的系统负载
参数: -V 显示版本资讯。
范例: uptime
其结果为:
10:41am up 5 days, 10 min, 1 users, load average: 0.00, 0.00, 1.99

名称:chfn

使用权限:所有使用者

用法:shell>> chfn

说明:提供使用者更改个人资讯,用于 finger and mail username

范例:

shell>> chfn
Changing finger information for user
Password: [del]
Name[]:Johnney Huang ### 提供 finger 时的资料
Office[]:NCCU
Office Phone[]: [del]
Home Phone[]: [del]


名称:chsh

使用权限:所有使用者

用法:shell>> chsh

说明:更改使用者 shell 设定

范例:

shell>> chsh
Changing fihanging shell for user1
Password: [del]
New shell [/bin/tcsh]: ### [是目前使用的 shell]
[del]

shell>> chsh -l ### 展示 /etc/shells 档案内容
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh



” finger [返回]
名称: finger
使用权限: 所有使用者

使用方式: finger [options] user[@address]

说明:finger 可以让使用者查询一些其他使用者的资料。会列出来的资料有:

Login Name
User Name
Home directory
Shell
Login status
mail status
.plan
.project
.forward

其中 .plan ,.project 和 .forward 就是使用者在他的 Home Directory 里的 .plan , .project 和 .forward 等档案里的资料。如果没有就没有。finger 指令并不限定于在同一伺服器上查询,也可以寻找某一个远端伺服器上的使用者。只要给一个像是 E-mail address 一般的地址即可。
把计

-l
多行显示。

-s
单行显示。这个选项只显示登入名称,真实姓名,终端机名称,闲置时间,登入时间,办公室号码及电话号码。如果所查询的使用者是远端伺服器的使用者,这个选项无效。

范例:下列指令可以查询本机管理员的资料:
finger root

其结果如下:
Login: root Name: root
Directory: /root Shell: /bin/bash
Never logged in.
No mail.
No Plan.




名称:last

使用权限:所有使用者

使用方式:shell>> last [options]

说明:显示系统开机以来获是从每月初登入者的讯息

把计

-R 省略 hostname 的栏位
-num 展示前 num 个
username 展示 username 的登入讯息
tty 限制登入讯息包含终端机代号

范例:

shell>> last -R -2
johnney pts/1 Mon Aug 14 20:42 still logged in
johnney pts/0 Mon Aug 14 19:59 still logged in

wtmp begins Tue Aug 1 09:01:10 2000 ### /var/log/wtmp


shell>> last -2 minery
minery pts/0 140.119.217.115 Mon Aug 14 18:37 - 18:40 (00:03)
minery pts/0 140.119.217.115 Mon Aug 14 17:22 - 17:24 (00:02)

wtmp begins Tue Aug 1 09:01:10 2000




名称:login

这个命令都不会就不要干算了!呵呵我也不在这里多费笔墨耽误大家美好青春了^_^



名称:passwd

使用权限:所有使用者

使用方式:passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]

说明:用来更改使用者的密码

参数:
-k

-l

-u

-f

-d 关闭使用者的密码认证功能, 使用者在登入时将可以不用输入密码, 只有具备 root 许可权的使用者方可使用.

-S 显示指定使用者的密码认证种类, 只有具备 root 许可权的使用者方可使用.

[username] 指定帐号名称.



名称 : who
使用权线 : 所有使用者都可使用

使用方式 : who - [husfV] [user]

说明 : 显示系统中有那些使用者正在上面,显示的资料包含了使用者 ID,使用的终端机,从那边连上来的,上线时间,呆滞时间,CPU 使用量,动作等等。

把计 :

-h : 不要显示标题列
-u : 不要显示使用者的动作/工作
-s : 使用简短的格式来显示
-f : 不要显示使用者的上线位置
-V : 显示程式版本
ghostya1017

ZxID:1331246


等级: 家喻户晓
原创音乐
举报 只看该作者 板凳   发表于: 2009-01-12 0
Re:教学  解释什么是 Linux ?什么是作业系统?
   建立一个安全Linux服务器


要建立一个安全Linux服务器就首先要了解Linux环境下和网络服务相关的配置文件的含义及如何进行安全的配置。在Linux系统中,TCP/IP网络是通过若干个文本文件进行配置的,也许你需要编辑这些文件来完成联网工作,但是这些配置文件大都可以通过配置命令linuxconf (其中网络部分的配置可以通过netconf命令来实现)。下面介绍基本的 TCP/IP网络配置文件。


* /etc/conf.modules文件


该配置文件定义了各种需要在启动时加载的模块的参数信息。这里主要着重讨论关于网卡的配置。在使用Linux做网关的情况下,Linux服务器至少需要配置两块网卡。为了减少启动时可能出现的问题,Linux内核不会自动检测多个网卡。对于没有将网卡的驱动编译到内核而是作为模块动态载入的系统若需要安装多块网卡,应该在“conf.modules”文件中进行相应的配置。

若设备驱动被编译为模块(内核的模块):对于PCI设备,模块将自动检测到所有已经安装到系统上的设备;对于ISA卡,则需要向模块提供IO地址,以使模块知道在何处寻找该卡,这些信息在“/etc/conf.modules”中提供。

例如,我们有两块ISA总线的3c509卡,一个IO地址是0x300,另一个是0x320。编辑“conf.modules”文件如下:


alias eth0 3c509
alias eth1 3c509
options 3c509 io=0x300,0x320

这是说明3c509的驱动程序应当分别以eth0或eth1的名称被加载(alias eth0,eth1),并且它们应该以参数io=0x300,0x320被装载,来通知驱动程序到哪里去寻找网卡,其中0x是不可缺少的。

对于PCI卡,仅仅需要alias命令来使ethN和适当的驱动模块名关联,PCI卡的IO地址将会被自动的检测到。对于PCI卡,编辑“conf.modules”文件如下:


alias eth0 3c905
alias eth1 3c905

若驱动已经被编译进了内核:系统启动时的PCI检测程序将会自动找到所有相关的网卡。ISA卡一般也能够被自动检测到,但是在某些情况下,ISA卡仍然需要做下面的配置工作:

在“/etc/lilo.conf”中增加配置信息,其方法是通过LILO程序将启动参数信息传递给内核。对于ISA卡,编辑“lilo.conf”文件,增加如下内容:

append=" ether="0,0,eth0 ether="0,0,eth1"

注:先不要在“lilo.conf”中加入启动参数,测试一下你的ISA卡,若失败再使用启动参数。

如果用传递启动参数的方法,eth0和eth1将按照启动时被发现的顺序来设置。


* /etc/HOSTNAME文件:


该文件包含了系统的主机名称,包括完全的域名,如:

deep.openarch.com


*/etc/sysconfig/network-scripts/ifcfg-ethN文件:


在RedHat中,系统网络设备的配置文件保存在“/etc/sysconfig/network-scripts”目录下,ifcfg-eth0包含第一块网卡的配置信息,ifcfg-eth1包含第二块网卡的配置信息。

下面是“/etc/sysconfig/network-scripts/ifcfg-eth0”文件的示例:


DEVICE=eth0
IPADDR=208.164.186.1
NETMASK=255.255.255.0
NETWORK=208.164.186.0
BROADCAST=208.164.186.255
ONBOOT=yes
BOOTPROTO=none
USERCTL=no

若希望手工修改网络地址或在新的接口上增加新的网络界面,可以通过修改对应的文件(ifcfg-ethN)或创建新的文件来实现。


DEVICE=name name表示物理设备的名字

IPADDR=addr addr表示赋给该卡的IP地址

NETMASK=mask mask表示网络掩码

NETWORK=addr addr表示网络地址

BROADCAST=addr addr表示广播地址

ONBOOT=yes/no 启动时是否激活该卡

none:无须启动协议

bootp:使用bootp协议

dhcp:使用dhcp协议

USERCTL=yes/no 是否允许非root用户控制该设备

*/etc/resolv.conf文件:


该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件,示例如下:


search openarch.com
nameserver 208.164.186.1
nameserver 208.164.186.2

“search domainname.com”表示当提供了一个不包括完全域名的主机名时,在该主机名后添加domainname.com的后缀;“nameserver”表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的。

*/etc/host.conf文件:

该文件指定如何解析主机名。Linux通过解析器库来获得主机名对应的IP地址。下面是一个“/etc/host.conf”的示例:

order bind,hosts
multi on
ospoof on

“order bind,hosts”指定主机名查询顺序,这里规定先使用DNS来解析域名,然后再查询“/etc/hosts”文件(也可以相反)。

“multi on”指定是否“/etc/hosts”文件中指定的主机可以有多个地址,拥有多个IP地址的主机一般称为多穴主机。

“nospoof on”指不允许对该服务器进行IP地址欺骗。IP欺骗是一种攻击系统安全的手段,通过把IP地址伪装成别的计算机,来取得其它计算机的信任。


*/etc/sysconfig/network文件


该文件用来指定服务器上的网络配置信息,下面是一个示例:


NETWORK=yes
RORWARD_IPV4=yes
HOSTNAME=deep.openarch.com
GAREWAY=0.0.0.0
GATEWAYDEV=
NETWORK=yes/no 网络是否被配置;
FORWARD_IPV4=yes/no 是否开启IP转发功能
HOSTNAME=hostname hostname表示服务器的主机名
GAREWAY=gw-ip gw-ip表示网络网关的IP地址
GAREWAYDEV=gw-dev gw-dw表示网关的设备名,如:etho等

注意:为了和老的软件相兼容,“/etc/HOSTNAME”文件应该用和HOSTNAME=hostname相同的主机名。


*/etc/hosts文件


当机器启动时,在可以查询DNS以前,机器需要查询一些主机名到IP地址的匹配。这些匹配信息存放在/etc/hosts文件中。在没有域名服务器情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的IP地址。

下面是一个“/etc/hosts”文件的示例:

IP Address Hostname Alias

127.0.0.1 Localhost Gate.openarch.com

208.164.186.1 gate.openarch.com Gate

………… ………… ………

最左边一列是主机IP信息,中间一列是主机名。任何后面的列都是该主机的别名。一旦配置完机器的网络配置文件,应该重新启动网络以使修改生效。使用下面的命令来重新启动网络:/etc/rc.d/init.d/network restart


* /etc/inetd.conf文件


众所周知,作为服务器来说,服务端口开放越多,系统安全稳定性越难以保证。所以提供特定服务的服务器应该尽可能开放提供服务必不可少的端口,而将与服务器服务无关的服务关闭,比如:一台作为www和ftp服务器的机器,应该只开放80 和25端口,而将其他无关的服务如:finger auth等服务关掉,以减少系统漏洞。

而inetd,也叫作“超级服务器”,就是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。inetd.conf则是inetd的配置文件。inetd.conf文件告诉inetd监听哪些网络端口,为每个端口启动哪个服务。在任何的网络环境中使用Linux系统,第一件要做的事就是了解一下服务器到底要提供哪些服务。不需要的那些服务应该被禁止掉,最好卸载掉,这样黑客就少了一些攻击系统的机会。查看“/etc/inetd.conf”文件,了解一下inetd提供哪些服务。用加上注释的方法(在一行的开头加上#号),禁止任何不需要的服务,再给inetd进程发一个SIGHUP信号。

第一步:把文件的许可权限改成600。

[root@deep]# chmod 600 /etc/inetd.conf

第二步:确信文件的所有者是root。

[root@deep]# stat /etc/inetd.conf

第三步:编辑“inetd.conf”文件(vi /etc/inetd.conf),禁止所有不需要的服务,如:ftp、 telnet、 shell、 login、 exec、talk、ntalk、 imap、 pop-2、pop-3、finger、auth,等等。如果你觉得某些服务有用,可以不禁止这些服务。但是,把这些服务禁止掉,系统受攻击的可能性就会小很多。改变后的“inetd.conf”文件的内容如下面所示:

# To re-read this file after changes, just do a 'killall -HUP inetd'
#
#echo stream tcp nowait root internal
#echo dgram udp wait root internal
#discard stream tcp nowait root internal
#discard dgram udp wait root internal
#daytime stream tcp nowait root internal
#daytime dgram udp wait root internal
#chargen stream tcp nowait root internal
#chargen dgram udp wait root internal
#time stream tcp nowait root internal
#time dgram udp wait root internal
#
# These are standard services.
#
#ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#
# Shell, login, exec, comsat and talk are BSD protocols.
#
#shell stream tcp nowait root /usr/sbin/tcpd in.rshd
#login stream tcp nowait root /usr/sbin/tcpd in.rlogind
#exec stream tcp nowait root /usr/sbin/tcpd in.rexecd
#comsat dgram udp wait root /usr/sbin/tcpd in.comsat
#talk dgram udp wait root /usr/sbin/tcpd in.talkd
#ntalk dgram udp wait root /usr/sbin/tcpd in.ntalkd
#dtalk stream tcp wait nobody /usr/sbin/tcpd in.dtalkd
#
# Pop and imap mail services et al
#
#pop-2 stream tcp nowait root /usr/sbin/tcpd ipop2d
#pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
#imap stream tcp nowait root /usr/sbin/tcpd imapd
#
# The Internet UUCP service.
#
#uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l
#
# Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers." Do not uncomment
# this unless you *need* it.
#
#tftp dgram udp wait root /usr/sbin/tcpd in.tftpd
#bootps dgram udp wait root /usr/sbin/tcpd bootpd
#
# Finger, systat and netstat give out user information which may be
# valuable to potential "system crackers." Many sites choose to disable
# some or all of these services to improve security.
#
#finger stream tcp nowait root /usr/sbin/tcpd in.fingerd
#cfinger stream tcp nowait root /usr/sbin/tcpd in.cfingerd
#systat stream tcp nowait guest /usr/sbin/tcpd /bin/ps -auwwx
#netstat stream tcp nowait guest /usr/sbin/tcpd /bin/netstat -f inet
#
# Authentication
#
#auth stream tcp nowait nobody /usr/sbin/in.identd in.identd -l -e -o
#
# End of inetd.conf

注意:改变了“inetd.conf”文件之后,别忘了给inetd进程发一个SIGHUP信号(killall 每HUP inetd)。

[root@deep /root]# killall -HUP inetd

第四步:

为了保证“inetd.conf”文件的安全,可以用chattr命令把它设成不可改变。把文件设成不可改变的只要用下面的命令:

[root@deep]# chattr +i /etc/inetd.conf

这样可以避免“inetd.conf”文件的任何改变(意外或是别的原因)。一个有“i”属性的文件是不能被改动的:不能删除或重命名,不能创建这个文件的链接,不能往这个文件里写数据。只有系统管理员才能设置和清除这个属性。如果要改变inetd.conf文件,你必须先清除这个不允许改变的标志:

[root@deep]# chattr -i /etc/inetd.conf

但是对于诸如sendmail,named,www等服务,由于它们不像finger,telnet等服务,在请求到来时由inet守护进程启动相应的进程提供服务,而是在系统启动时,作为守护进程运行的。而对于redhat linux,提供了一个linuxconfig命令,可以通过它在图形界面下交互式地设置是否在启动时运行相关服务。也可以通过命令来设置是否启动时启动某个服务,如: [root@deep]# chkconfig 每level 35 named off

具体命令可以参考man chkconfig的说明。


* /etc/hosts.allow /etc/hosts.allow


但是对于telnet、ftp等服务,如果将其一同关闭,那么对于管理员需要远程管理时,将非常不方便。Linux提供另外一种更为灵活和有效的方法来实现对服务请求用户的限制,从而可以在保证安全性的基础上,使可信任用户使用各种服务。Linux提供了一个叫TCP wrapper的程序。在大多数发布版本中该程序往往是缺省地被安装。利用TCP wrapper你可以限制访问前面提到的某些服务。而且TCP wrapper的记录文件记录了所有的企图访问你的系统的行为。通过last命令查看该程序的log,管理员可以获知谁曾经或者企图连接你的系统。

在/etc目录下,有两个文件:hosts.deny hosts.allow 通过配置这两个文件,你可以指定哪些机器可以使用这些服务,哪些不可以使用这些服务。

当服务请求到达服务器时,TCP wrapper就按照下列顺序查询这两个文件,直到遇到一个匹配为止:

1. 当在/etc/hosts.allow里面有一项与请求服务的主机地址项匹配,那么就允许该主机获取该服务

2. 否则,如果在/etc/hosts.deny里面有一项与请求服务的主机地址项匹配,就禁止该主机使用该项服务。

3. 如果相应的配置文件不存在,访问控制软件就认为是一个空文件,所以可以通过删除或者移走配置文件实现对清除所有设置。在文件中,空白行或者以#开头的行被忽略,你可以通过在行前加 # 实现注释功能。

配置这两个文件是通过一种简单的访问控制语言来实现的,访问控制语句的基本格式为:

程序名列表:主机名/IP地址列表。

程序名列表指定一个或者多个提供相应服务的程序的名字,名字之间用逗号或者空格分割,可以在inetd.conf文件里查看提供相应服务的程序名:如上面的文件示例中,telent所在行的最后一项就是所需的程序名:in.telnetd。

主机名/IP地址列表指定允许或者禁止使用该服务的一个或者多个主机的标识,主机名之间用逗号或空格分隔。程序名和主机地址都可以使用通配符,实现方便的指定多项服务和多个主机。

Linux提供了下面灵活的方式指定进程或者主机列表:

1. 一个以"."起始的域名串,如 .amms.ac.cn 那么www.amms.ac.cn就和这一项匹配

2. 以"."结尾的IP串如 202.37.152. 那么IP地址包括202.37.152. 的主机都与这一项匹配。

3. 格式为n.n.n.n/m.m.m.m表示网络/掩码,如果请求服务的主机的IP地址与掩码的位与的结果等于n.n.n.n 那么该主机与该项匹配。

4. ALL表示匹配所有可能性

5. EXPECT表示除去后面所定义的主机。如:list_1 EXCEPT list_2 表示list_1主机列表中除去List_2所列出的主机

6. LOCAL表示匹配所有主机名中不包含"."的主机

上面的几种方式只是Linux提供的方式中的几种,但是对于我们的一般应用来说是足够了。我们通过举几个例子来说明这个问题:

例一:我们只希望允许同一个局域网的机器使用服务器的ftp功能,而禁止广域网上面的ftp服务请求,本地局域网由 202.39.154. 、202.39.153. 和202.39.152. 三个网段组成。

在hosts.deny文件中,我们定义禁止所有机器请求所有服务:

ALL:ALL

在hosts.allow文件中,我们定义只允许局域网访问ftp功能:

in.ftpd -l 每a: 202.39.154 202.39.153. 202.39.152.

这样,当非局域网的机器请求ftp服务时,就会被拒绝。而局域网的机器可以使用ftp服务。此外,应该定期检查/var/log目录下的纪录文件,发现对系统安全有威胁的登录事件。last命令可以有效的查看系统登录事件,发现问题所在。

最后tcpdchk是检查TCP_WAPPERS配置的程序。它检查TCP_WAPPERS的配置,并报告它可以发现的问题或潜在的问题。在所有的配置都完成了之后,请运行tcpdchk程序:

[root@deep]# tcpdchk


* /etc/services”文件


端口号和标准服务之间的对应关系在RFC 1700 “Assigned Numbers”中有详细的定义。“/etc/services”文件使得服务器和客户端的程序能够把服务的名字转成端口号,这张表在每一台主机上都存在,其文件名是“/etc/services”。只有“root”用户才有权限修改这个文件,而且在通常情况下这个文件是没有必要修改的,因为这个文件中已经包含了常用的服务所对应的端口号。为了提高安全性,我们可以给这个文件加上保护以避免没有经过授权的删除和改变。为了保护这个文件可以用下面的命令:

[root@deep]# chattr +i /etc/services


* /etc/securetty文件


“/etc/securetty”文件允许你规定“root”用户可以从那个TTY设备登录。登录程序(通常是“/bin/login”)需要读取“/etc/securetty”文件。它的格式是:列出来的tty设备都是允许登录的,注释掉或是在这个文件中不存在的都是不允许 oot登录的。

注释掉(在这一行的开头加上#号)所有你想不让root登录的tty设备。

编辑securetty文件(vi /etc/securetty)象下面一样,注释掉一些行:

tty1
#tty2
#tty3
#tty4
#tty5
#tty6
#tty7
#tty8


* 使Control-Alt-Delete关机键无效


把“/etc/inittab”文件中的一行注释掉可以禁止用Control-Alt-Delete关闭计算机。如果服务器不是放在一个安全的地方,这非常重要。

编辑inittab文件(vi /etc/inittab)把这一行:

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

改为:

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

用下面的命令使改变生效:

[root@deep]# /sbin/init q


* 改变“/etc/rc.d/init.d/”目录下的脚本文件的访问许可


/etc/rc.d/init.d/下的脚本主要包含了启动服务的脚本程序。一般用户没有什么必要知道脚本文件的内容。所以应该改变这些脚本文件的权限。

[root@deep]# chmod -R 700 /etc/rc.d/init.d/*

这样只有root可以读、写和执行这个目录下的脚本。


* /etc/rc.d/rc.local文件


在默认情况下,当登录装有Linux系统的计算机时,系统会告诉你Linux发行版的名字、版本号、内核版本和服务器名称。这泄露了太多的系统信息。最好只显示一个“Login:”的提示信息。

第一步

编辑“/ect/rc.d/rc.local”文件,在下面这些行的前面加上“#”:

--
# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
#echo "" > /etc/issue
#echo "$R" >> /etc/issue
#echo "Kernel $(uname -r) on $a $(uname -m)" >> /etc/issue
#
#cp -f /etc/issue /etc/issue.net
#echo >> /etc/issue
--

第二步

删除“/etc”目录下的“issue.net”和“issue”文件:

[root@deep]# rm -f /etc/issue
[root@deep]# rm -f /etc/issue.net

注意:“/etc/issue.net”文件是用户从网络登录计算机时(例如:telnet 、SSH),看到的登录提示。同样在“”目录下还有一个“issue”文件,是用户从本地登录时看到的提示。这 两个文件都是文本文件,可以根据需要改变。但是,如果想删掉这两个文件,必须向上面介绍的那样把 “/etc/rc.d/rc.local”脚本中的那些行注释掉,否则每次重新启动的时候,系统又会重新创建这两个文件。


忘记在哪里取得的,躺在电脑好一段时间了.
分享给大家.....



Linux系统各档、目录介绍

一、简介:
Linux作业系统中,以档来表示所有的逻辑实体与非逻辑实体。逻辑实体系指档与目录; 非逻辑实体则泛指硬碟、终端机、印表机等。
一般而言,Linux档案名称的组成除由连续字母、标点符号、数位等构成外,中间不能有空白字元、路径名称符号 / 或 # * % & {} [] ……..等与Shell有关的特殊字元。
Linux档系统中,结构上以root file system 位元最上位也最为重要,所谓root file system乃于开机时将root partition挂载在 / 的目录,若无法mount / 则开机时无法进入Linux系统中此时仅能remount / 的目录。该目录下有/etc、/dev、/boot、/home、/lib、/lost+found、/mnt、/opt、/proc、/root、/bin、/sbin、/tmp、/var、/usr等重要目录,以下兹分别介绍之。

二、目录与档简介

1./etc:本目录下存放着许多系统所需的重要设定与管理文件,有一些为纯档名,有些是以.conf的型态出现另亦有一些自成单一目录:当然亦有些设定档并非放在/etc目录下,例如使用者家目录之.bashrc、.bash_profile等文件;通常祇要更动过/etc目录下之设定档内容必须重新启动设定档使设定生效,且一般亦无须重开机。以下谨胪列主要档如后:

(1) HOSTNAME
本档内容仅记载主机+网功能变数名称称,在系统提示符号下输入hostname可以显示HOSTNAME之档内容。如:www.webrj.comwww.webrj.netwww.e0797.comwww.ok138.com等。

(2) XF86Config
本档内容为X Window System的主要设定档,Caldera的版本放在/etc目录下,RedHat版本则放在/etc/X11目录下,有关显示卡、滑鼠、键盘均可在此加以设定。

(3) aliases
本档内容用来设定邮件别名及邮件清单可以让特定的位址转寄给不同的使用者或群组;编辑完/etc/aliases后须下newaliases指令使之生效,对于由远端寄送至local端的邮件具有备份功能,为mail server重要的设定档之一。

(4) amd.conf
本档为一常驻服务程式(daemon),全名为automatically mount file system,Caldera的版本称为am.d;是一个能自动mount和umount cdrom和floppy的档系统。

(5) at.deny
本档为对能否使用at指令的使用者加以限制, at 是一个非常有用的工具,可以让使用者指定在特定时刻执行某个程式或指令,通常只执行一次。如果你想定时定期的执行某项工作,应该使用cron工具而非at。

(6) crontab
本档可让系统定时执行排程工作为系统管理上极为重要之档,Cron是一个常驻程式 (daemon),在开机时启动cron的daemon时,它会自动去检查/var/spool/cron 目录下面看看是否有任何cron档。每一个user的可以去设定自己所要排定执行的工作。在这一个目录底下,每一个user会有一个属于他loginid名称的cron档,crond会自动将这些user的cron档载入至记忆体中,并定期去执行每个user的cron档。另外,crond也会去读取 /etc/crontab 的内容。

这是属于系统的cron工作设定档,主要系统会定期去执行 /etc/cron.d/ 目录下面四个cron.daily、cron.hourly、cron.weekly、cron.monthly目录下(RedHat版本则集中放在/etc目录下)的命令。

(7) dhcpd.conf
本档为DHCP Server的设定档,可烤贝/usr/doc/dhcp-serial number目录下的dhcpd.conf.sample至/etc目录下,该档内容一般有记载着subnet、netmask、routers、domain-name、default-lease-time、max-lease-time及 IP range;亦可一并指派固定IP给特定主机。

(8) dosemu.conf
本档为Dos模拟器的设定档可以在Linux上仿真Dos环境,用Dos 指令。

(9) dumpdate
dump指令可对Linux ext2档系统进行检查备份(例如dumpe2fs /etc 对/etc目录作备份),dumpdate则是存放dump指令的执行日期。

(10) exports
本档为NFS(Network File System)设定档,NFS主要是运用在UNIX 系统上,用来使UNIX系统能够在几部电脑间做档的分享。其功能类似windows的网路磁碟机,可以mount的方式,分享其他linux或UNIX主机的目录或档。exports档内则分别记载着分享目录、分享物件及许可权等专案。

(11) fdprm
本档为软碟机参数表,含有各大小格式磁区磁轨等资料。

(12) fstab
本档包含了开机时需载入的档系统,每一行都表示一个档系统,各栏位分别有特定的装置或远端的档系统、挂载点、载入的档型态、挂载选项、dump设定及fsck设定。此档可供Linux于开机时载入到系统上,并于关机时卸载。

(13) ftp*
以ftp开头的档如ftpaccess(主要设定档)、ftpconversions(档的相关压缩规定)、ftpgroups、ftphosts、ftpusers(分别为ftp群组、主机、使用者拒绝存取设定)等均为ftp server相关的设定档。

(14) group 本档为群组的资料档,可以使每个使用者均拥有自己的群组;一般而言新的使用者建立后的的同时会产生相同于使用者名称的群组名称(RedHat Distribution)(Caldera Distribution 则会随adduser 或useradd 指令的不同而会纳入users群组或相同于使用者名称的群组名称);在GNOME环境中可用LinuxConf设定,在KDE环境中可用User Manger加以设定之。

(15) host*
在/etc目录下以host开头的档有host.conf、hosts、hosts.allow、host.deny等目录,兹分述如下:
host.conf
本档设定网路搜寻顺序系依hosts或DNS之先后顺序定之;同时亦可一并设定是否将多重IP指定给一台主机与否。
hosts
本档设定主机的IP及网功能变数名称称,利用此档可加速特定主机的搜寻速度无须借助DNS之功能,早期未有DNS前即是依赖hosts档作名称查寻。
hosts.allow
本档记载着允许那些主机联机到你的主机,在系统安全上为Tcpwrapper机制的存取控制档。通常是维护主机安全或作测试用。
hosts.deny
本档记载着拒绝那些主机联机到你的主机,在系统安全上为Tcpwrapper机制的存取控制档。通常是维护主机安全或作测试用。一般而言,常与hosts.allow档原则上先deny ALL 再设定allow,被allow同意的存取便不会再被deny否决。

(16) httpd
本目录下置放有conf目录、log 及module等档其中尤以conf目录下的httpd.conf(主要设定档) 、access.conf(网页目录及资料来源路径档)、srm.conf(设定apache的存取控制档),目前Apache 1.3.9以后版本已整合成httpd.conf加以设定即可;/etc/httpd为Apache Server重要目录所在。

(17) inetd.conf
通常当系统启动时,有部份的service是并没有在开机时被启动的,以节省系统资源。他们是利用inetd( internet daemon)--来监控网路服务的要求,再启动适当的daemon。inetd 是用来监控各种service的daemon,依不同的port提供不同的监控。/etc/inetd.conf即为其设定档,并由tcpd来提供监控。例如将telnet加上#,系统便不提供telnet的服务。
本档最常与Tcpwrapper机制的存取控制档hosts.allow及 hosts.denyx配负责网路安全的监控;举ftp为例,当inetd接收到使用ftp的请求时,便会启动tcpd,tcpd先纪录这项ftp的请求,然后检查hosts.allow、host.deny这二个存取设定控制档,如果同意存取,就会启动。另外,Tcpwapper只能影响inetd启动,并且在inetd.conf里面经过编辑,由tcpd呼叫的服务,所以并不能为其他服务提供安全保障(如sendmail、NFS等)。管理者可以看log档知道系统是否有被别人侵入。

(18) inittab
一般Linux系统启动时,LILO 执行后载入kernel,kernel启动后呼init program(/sbin/init)启动系统必备程式,init为parent process(呼叫后fork 许多child process),接着便检视/etc/inittab,视/etc/inittab以runlevel? 启动再执行/etc/rc.d/rc.?d/下所有s开头之shell script,直到完成(ex.s10network ; s40cron)是以inittab档乃在规范使用者要以那一种runlevel登入Linux系统,我们亦可直接在系统提示符号下输入init 或 telinit 后加上欲登入之第几层runlevel,例如init 3 或telinit 5,即可进入该环境模式。

(19) isapnp.gone
本档包含ISA介面卡所使用的资源,可用来设定硬体所需的记忆体、I/O Base、IRQ及DMA。

(20) issue(net)
本档是记载使用者在登入本机时所出现的一段文字讯息,例如“Red Hat Linux release 6.2 (Zoot) + CLE V0.9P1 (Yami) Kernel 2.2.17-4CLE on an i586”而issue.net则用于远端登入时之文字讯息显示之用。issue档可加以修改成你需要出现的内容, 但需同时将/etc/rc.d/rc.local档中“echo “” > /etc/issue至echo >> /etc/issue”等几行加上批注起来,始能生效。

(21) ldso.conf
本档存放了系统中共用函式库(shared libraries)的路径;Linux提供了两种形式函式库:shared及static,而Unix只提供shared libraries。当程式被编译时,程式便会去连结该程式所需用到的函式库。有时候程式为了便于侦错,或是为了某些考量,我们不希望程式去使用共用函式库,而是把会用到的程式库全部连结进程式的执行档,让程式本身拥有一份函式库中函式的副本,这种方式称为静态连结程式(static linked),而依赖共用函式库所建立的程式称动态连结程式(Dynamically Linked)。系统安装了library后,必须告诉程式library放置于何处,使用共用函式库的好处是免除不同的程式里重复使用静态函数库(static libraries),与其在每个呼叫这些函式的程式里都储存一份copy,不如把函式库集中在系统的档里,让执行的程式都可以读到这个程式。
当编辑完ldso.conf档增加新的函式库或新安装某个套件之后(可能会安装某个新的共用函式库),后须下ldconfig -v,使之生效。

(22) lilo.conf
lilo即linux loader,本文件lilo.conf内容可以分为两部分: Global及per-image,负责指定开机时所使用的kernel及开机时所要读取的lilo是放在哪一个装置,另亦有设定多重开机功能,使多个作业系统并存;如果对本档进行修改,须下lilo –v –v –v 的指令重改设定由于lilo并非为一Daemon,仅为一内部程式,通常须重开机后设定始能生效。

(23) mediaprm
本档用来定义磁碟机位于Linux下的代号ex. /dev/fd0、/dev/cdrom

(24) modules.conf
本档为模组的主要设定档,在Red Hat 版本之名称命名为conf.modules ,Modules一般来说大部分为一些装置、网路、档系统等的驱动程式,传统上,驱动程式是核心的一部份,因为几乎所有的核心都需要藉由成为核心码的一部份来取得使用硬体的能力,至于模组化程式则是一种可载入之式驱动程式(Loadable
device driver),在系统执行时是直接由载入记忆体或从记忆体卸载;而使用module的方式,可以不用重新建立kernel,同时也可以节省时间及记忆体空间。

(25) motd
本档为系统显示与user的提示讯息提示的时机则在user login并输入帐号及密码后出现之讯息,例如:“Last login: Mon Dec 18 10:19:15 on tty1”。

(26) mtab
本档记载着已挂载(mount)的档系统,当你下mount指令时所显现之内容与mtab内容常相一致。

(27) ntp.conf
NTP全名为Network Time Protocol(网路对时协定),系client端针对NTP Server作同步化对时所使用之协定,为达到NTP同步化获致正确而可信赖时间。ntp.conf则为主要设定档提供模式的选择和使用的servers设定。

(28) pam.d
PAM(Pluggable Authentication Modules)即可插拔的认证模组;当login时,必需提供username和password,然后系统根据所给予的username和password来验证可否login,确认使用者身份,PAM允许设置多种认证方式,不须再重新编译核心要进行认证的程式。使用PAM,可编辑配置档动态的去读取配置模组,然后再去执行验证;pam.d目录下则放置与PAM相关的档。

(29) passwd
每一位使用者皆有使用者名称供以辨识身份,亦必须一并设定密码在/etc/passwd档中可以root身份来加入新的使用者,通常user输入username及密码,系统会先将输入之密码加密成13位元码,再与 / etc / passwd作一比对,无误与否。至于实际的密码则放在/etc/shadow档中。

(30) protocols
通讯协定号码是IP资料段表头中的一个位元组,藉以显示出资料应该传给IP层以上的何种协议;至于协定号码则规范在本档中,protocols内容是一个对照表,包含协定名称及协定号码和批注等栏项,利用协定号码与协定名称的对照便可知使用何种协定。

(31) rc.d
本目录下以etc/rc.d/rc0.d ~ /etc/rc.d/rc6.d里的档代表各种不同runlevel所启动的daemon尤为重要,K代表kill,S代表start。在渠等目录下的档通常为一连结档link至/etc/rc.d/init.d 里的daemon以供启动。/etc/inittab档乃在规范使用者要以那一种runlevel登入Linux系统,至于本档案则视以runlevel? 登入,代表启动rc?.d目录下依序启动各连结档的shell script(/etc/rc.d/init.d 里的daemon)。

(32) resolv.conf
BIND的伺服端透过daemon(/etc/rc.d/init.d/named)来执行;BIND的用户端则透过resolver,它是一个程式函式库组成,会发出名称查询,而由/etc/resolv.conf设定之(即将nameserver加入该文件中),例如echo “
nameserver 172.17.0.10” >> /etc/resolv.conf 或者手动vi编辑之。

(33) rpc
rpc全名为remote procedure call即远端程式呼叫,通常系指local 端程式对位于远端系统中的程式进行呼叫,俟其完成任务并将该任务传回给local端;/etc/rpc档记忆体rpc程式号码资料库,含有使用者可识别之替代rpc程式号码的名称基本格式则含有rpc程式的server名称、rpc程式号码、别名等记载栏项。

(34) samba.d/smb.conf:
Samba(Server Message Block protocol)使用来将linux system与windows system透过网路上的芳邻作沟通整合之用,而/etc/samba.d/smb.conf 则为samba的重要设定档,该档中主要分global与share defini tions二大项;/etc/samba.d/ smbpasswd则是samba password的设定档。

(35) securetty
本档定义了root可login的terminal,一般而言预设为tty1至tty8,root只能从定义中的terminal登入。

(36) sendmail.cf
本文件为mail server的重要设定档,sendmial是一种MTA,目前在unix或linux上使用相当广泛,由柏克莱大学大学生所写的程式,功能强大,但sendmail.cf内容由巨集指令写成较为艰涩难懂,因此一般除伪装名称、主机的别名、收信的主机位置名称等少数专案由sendmail.cf档直接于其中设定外,一般而言,均另用m4产生sendmail.cf的巨集定义档,RedHat版本名称为/etc/sendmail.mc ,OpenLinux版本则放在/usr/share/sendmail/cf/cf/gerneric-col2.2.mc;此外/etc/aliases、/etc/access、/etc/mail/relay-domains亦为sendmail的相关设定档。

(37) services
一般而言Linux或Unix的作业系统port号码常定义在/etc/services档中由port号码可辨示出application process(应用程式列程)即网路服务例如ftp、telnet;在services档中256以下port号码保留给常用的网路服务,256到1024的port号码则由特定的Linux服务使用,另不同的Transport Layer(传输层)可以共用相同的port号码;port号码必须与协议号码共同x配始能将资料导引到正确的网路服务。

(38) shadow
Shadow passwording将密码移到另一个档,本档即属密码档而与/etc/passwdx配;许可权上则较为严格,一般而言,仅有root有读写(Caldera distribution)或读(RedHat distribution)的权利。

(39) skel
本目录下之档内容例如:.bash_logout、.bash_profile、.bashrc、.kde、.kderc、.netscape、.screenrc、Destop等即是用来在建立一新的使用者时在/home/目录下的使用者名称目录的内容即烤贝至skel此目录下之档内容。

(40) sysconfig/network-sccripts/ifcfg-eth?
本档为网路卡的设定档内容有设备名称、IP位址、遮罩、广播地址、网段、开机启动设定等项目。

(41) wgetrc
wget乃使用来将World wide web上之档取回之工具指令,wgetrc档则是wget初始化的档其中有quota、mail header、重传档的预设次数、firewall及proxy的相关设定。

(42) z*
以下z开头的档均为zshell相关的设定档zlogin系指z shell的登入设定;zlogout系指z shell的注销设定;zprofile系指z shell的使用者设定;zshenv系指z shell的使用环境设定;zshrc系指z shell的资源档设定。


2./dev:
本目录中存放了device file(装置档),使用者可以经由核心用来存取系统中之硬体设备,当使用装置档时 核心会辨识出I/O Request传递到相对应装置的驱动程式以便完成特定的动作;每个装置在/dev目录下均有一个相对应的项目;另/dev目录下尚有一些专案是没有的装置这通常是安装系统时所建立的,它不一定对应到实体的硬体装置;此外亦有一些虚拟的装置,不对应到任何实体装置,例如俗称黑洞装置的/dev/null,任何写入该档的请求均会被执行但被写入的资料均会如进入黑洞般的消失无踪。
在/dev目录下第一栏的档型态会发现常存有既非directory亦非file而是“b”或”c”,”b”指block device file(区块装置档),”c”指character device(字元装置档);区块装置(例如硬碟)通常是外接装置,资料的读写都是以整个区块的形式进行读写,字元装置(例如序列埠),资料的读写都是以一个byte来进行读写。

(1) /dev/fd*
fd0、fd1--------等指第几个软碟支援的装置驱动介面,fd0表示第一个fd1表示第二个。

(2) /dev/hd
系指IDE硬碟的装置驱动介面,在/dev/lilo.conf设定中boot=/dev/hda即指整颗硬碟,/dev/hda1则指硬碟中的第一个partition。

(3) /dev/sd
系指SCSI磁片的装置驱动介面。

(4) /dev/console
系指系统的操作控制台乃实际连接到Linux作业系统的荧幕。

(5) /dev/tty
系指提供使用者不同的terminal操作控制台的装置驱动介面,并有virtual console的功能切换上可使用ctrl+alt+F1~F6。

(6) /dev/ttyS?
ttyS系指序列埠介面ttyS0即为COM1,ttyS1即为COM2


3./boot:
本目录下放置有系统启动的相关档例如initrd.img、vmlinuz、System.map,均为重要的档,是以本目录不可任意删除。

initrd.img为系统启动时最先载入的档。

Vmlinuz即为kernel的image文件。

System.map包括了kernel的功能及位置。top、ps指令会去读此档来显示系统目前的资讯状态。因此System.map必须对应到相同的kernel,不然会显示错误的资讯。

4./home:
一般而言,使用者的家目录就($HOME)是放在/home这个目录下,而以使用者名称作为/home目录下各个目录的名称例如使用者col的家目录路径即为/home/col目录下当使用者col login时,其所在的目录即为/home/col,此外ftp站台目录(ftp)及web站台目录(httpd)亦置于/home目录下。

5./lib:
许多系统启动时所需要用到重要的共用函式库shared libraries均放于此,包含最重要的GNU C library在内,凡档名为library.so.version的共用函式库,通常放在/lib目录下。

/usr/lib/:
本目录与/lib目录不同的是/lib乃系统启动时所需要用到重要的共用函式库而/usr/lib乃关于应用软体常置放函式库之处;例如放置一些其他应用程式(如Netscape、X server)等的share libraries。其中,最重要的函式库为libc或glibc (glibc 2.x便是libc 6.x版本,标准C语言函式库)。几乎所有程式都会用到libc或glibc,因为这两个程式提供了对于Linux kernel的标准介面。又档名为library.a的静态函式库,通常亦放在/usr/lib目录下。

6./lost+found:
一般重启或关闭system,可下sync;sync.避免有些message会留在硬碟之cache上,此时dirty bit为1,当再开机时,system会去检查每一个dirtybit是否为0,如果为1则会执行fsck。作fsck时,常会问要否删除dirtybit,如选yes时,会把inode集中放在lost+foundR用file 指令去查寻,不重要再行删除即可(inode number)。简单言之,本目录乃记录硬碟上的partition于资料流失时作fsck寻找回来的遗失文件片段。

7./mnt:
本目录为系统内定的mount point(挂载点),预设则有/nnt/cdrom和/mnt/floppy,使用自动的挂载程式例如KDE桌面上的cdrom与floppy或者GNOME的Drive Mount Applet,均会自动地把光碟机和软碟机挂载至这二个目录。如果要挂载入额外的档系统,一般而言我们都会将/mnt目录当作挂载点,然后在该目录下建立任一目录名称作为挂载目录;家目录把同一颗硬碟上的另一个Window 2000作业系统mount到本机Linux作业系统上则可用此法。

8./proc:
本目录为一个虚拟的档系统,其功能乃在统一档与行程,它不占用任何硬碟空间,因为该目录下的档均放置于记忆体内;每当你存取/proc档系统时kernel会拦截你的存取动作撷取相关资讯再动态的产生目录与档内容。
本目录下主要有二大形态的档;其一是以PID数位为档案名,/proc会记录系统每个行程,有助于系统的管理于与除错;其二乃kernel所搜集到的系统使用的硬体资讯例如/proc/ioports、/proc/dma、/proc/meminfo、/proc/interrupts均属之。

9./root:
本目录为系统管理者 root的家目录。

10./bin:
bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等。

/usr/bin:
主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、newaliases、nslookup passwd、quota、smb*、wget等。

/sbin:
主要放置一些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk、halt、ifconfig、ifup、ifdown、init、insmod、lilo、lsmod、mke2fs、modprobe、quotacheck、reboot、rmmod、runlevel、shutdown等。

/usr/sbin:
放置一些网路管理的必备程式例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等。

11./tmp:
本目录乃供全体使用者暂时放档的目录,有时某些应用程式执行中产生的暂存档案亦会暂放至此目录;然而系统预设本目录许可权为可读、写、执行但无法删除之1777(drwxrwxrwt)亦即多加上save program text on swap device即t 的许可权;以避免有人任意删除他人存放于/tmp目录的档。

12./var:
Linux作业系统经常需要变动的或暂存的资料常放在固定的目录而后系统新产生的资料都会在这个档中作更新;在这个目录下有几个重要的目录例如:/var/log;/var/spool;/var/run等以下兹分别介绍之:

(1) /var/log
log档乃记载着Linux作业系统运作过程的记录分别有启动纪录(boot)、网站存取、错误、安全记录(httpd/access_log、httpd/error_log、httpd/ssl*)、邮件记录(maillog)、登入讯息(secure)、FTP讯息(xferlog)。

(2) /var/spool
spool乃Linux作业系统将工作暂放置于记忆体特定区域或硬碟上特定设备,/var/spool是一个伫列目录提供spool服务,其底下最为重要的目录即为lpd、mail、squid等三个目录;列印档的print queue会在/var/spool/lpd。
大家帮帮小弟

ZxID:1738896


等级: 小有名气
举报 只看该作者 地板   发表于: 2009-01-15 0
Re:教学  解释什么是 Linux ?什么是作业系统?
好多...
发帖 回复