第1章准备工作环境.docx

上传人:夺命阿水 文档编号:335427 上传时间:2023-04-19 格式:DOCX 页数:55 大小:230.54KB
返回 下载 相关 举报
第1章准备工作环境.docx_第1页
第1页 / 共55页
第1章准备工作环境.docx_第2页
第2页 / 共55页
第1章准备工作环境.docx_第3页
第3页 / 共55页
第1章准备工作环境.docx_第4页
第4页 / 共55页
第1章准备工作环境.docx_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《第1章准备工作环境.docx》由会员分享,可在线阅读,更多相关《第1章准备工作环境.docx(55页珍藏版)》请在课桌文档上搜索。

1、准备工作环境在这一章中,我们将指导你通过这些步骤来准备工作环境,包括计算机和网站服务器。要想建立一个功能齐全的Nginx,需要理解许多事情,尤其是使用Windows操作系统的读者。本章主题 设置终端仿真器,用于通过命令行界面连接到远程服务器 基本的Linux命令行工具,供不同阶段使用 介绍Linux文件系统结构 系统管理工具 管理文件和权限设置终端仿真器对于过去十五年天天都在Windows操作系统下工作的我们来说,这个想法可能又使我们回到一个好的、老的基于命令行的界面,看起来好像稍微有点原始,但尽管如此,这对于大多数服务器管理员来说是必要的。第一个准备工作是下载和安装一个SSH客户端(SeCU

2、reShell,SSH),这是一个网络协议,通过这个协议能够使两个设备进行安全的通信,安全的保证在于交换的数据是加密的。它的作用显而易见,就是用于连接远程系统的shell,换句话说,就是在不损害安全的情况下能够控制服务器。查找并下载PuTTY在Windows操作系统下,对于使用SSH的访问者来说,PuTTY是一个使用广泛的终端仿真器。因此,可以在网上找到大量的文章和其他文档,该软件会提供各种不同的功能。我们将只涵盖与这里相关的功能-配置PuTTY连接服务器,输入文本,使用复制和粘贴命令。但应该知道还有很多免费的开源工具能够建立SSH通道,连接到Telnet、Rlogin甚至是原始TCP通信(r

3、awTCPcommunication),等等O可以直接从作者的网站下载PuTTY:-SgtathamZputty/它只有一个单独的.EXE程序,不需要任何额外的文件。它的所有数据都保存在WindOWS注册表中,所以不会用配置文件来塞满你的系统。建立会话在继续阅读之前,首先确定下列元素: 准备连接的主机名或IP地址; SSH守护进程的端口号,除非已知有其他端口号,否则该服务默认的是端口号是22; 系统的一个用户帐号;帐号的密码。让我们快速看一下PuTTY的主要窗口(见下图)。PuTTY会保存session中的设置,因此在完成各种参数配置后,确定指定该会话的名称后再单击SaVe按钮,如上图所示。在

4、默认的PuTTY界面上,需要填入想要连接的远程服务器的主机名(或者IP地址),然后配置运行在远程服务器上的SSH服务提供的端口号,SSHD默认的端口号是22。这里另外有几个设置选项,可能有用。 在WhI(IoW设置组,可能需要调整一些参数,例如终端窗口的大小和能够回显的行数。 在WindOWlAPPearanCe设置组,可以改变在终端窗口中显示的字体、字形及字号的大小,也包括光标选项。 在WindowITranslation设置组,可以指定不同的字符集,这对运行UTF-8字符集的服务器非常有用。在Connection设置组,可开启TCPkeepalives功能,以防止TCP超时而导致断开。 在

5、ConnectionData设置组中,可以输入要连接的系统的帐户,然而由于安全的原因,PuTTY并不允许你保存用户的密码。一旦完成会话的配置,记得再次保存,然后再开始单击主窗口上的OPen按钮建立连接。如果是第一次连接到服务器,则需要通过接受服务器端的指纹(fingerprint)来证实它的真实性。如果以后再连接到同一台服务器,则不会再看到确认的信息,除非服务器设置(例如主机名或者是端口号)改变,或者是安全性被损坏,你连接到了一个中间的服务器(有人在中间攻击)。最后,提示注册(除非你激活自动登录选项)和密码。请注意,在键入密码的时候,密码是根本不会显示在屏幕上的一一甚至不会以星号显示,因此要确

6、保键入的密码准确无误,然后按Enter键。矛alens3O4584:-日日loginas:alexaleeaxnple.con)1spassword:CencOSreleaseS.2(Final)Linuxns304S2.6.28.l-xxx-std-ipv4-32#2SNPFriJem3009:55:02UTC2009168616861366GNU/Linuxserver:84119ip:94.23.213.166hoscneune:alns304584$使用PuTTY和shell如果你以前从来没有使用过PuTTY或者系统shell,可以看看下面的详细介绍,涉及终端仿真器主窗口的一些行为。

7、在终端窗口中,使用鼠标光标选择的文本在你释放鼠标左键的时候会自动复制到剪贴板。 在窗口的任何区域,只要单击鼠标右键就会将剪贴板中的文本粘贴到终端窗口。 使用快捷键Ctrl+C并不会把文本复制到剪贴板,而是中断一个正在执行的程序。如果你意外运行一个超长时间执行的命令,则可以通过这个快捷方式来结束程序,从而再次出现Shell0 万一从服务器断开连接,则右击终端窗口的标题栏,打开一个菜单,然后选择“重新开始会话”。 在命令行键入文件名的时候,可以通过Tab键尝试自动补全文件名。在使用Tab补全的过程中,如果听至IJ“哗哗”的声响,这可能有两个原因:不是你键入的文件名片段(文件名的一部分)在系统中不存

8、在,就是在系统中找到多个文件。如果是属于后一种情况,那么快速敲Tab键两次就会看到一个与已输入部分的文件名匹配的一个文件列表。注意,这个功能并非一直有效,这依赖于服务器运行的系统。基本的shell命令连接到服务器并打开一个终端窗口是一回事,能够实际使用则是另一回事。如果从来没有在LinUX下工作过,你可能会发现这部分内容对你特别有帮助,它会帮助你了解最基本的和有用的命令。这里介绍的很多命令都将用于后面的章节,但是你很快会意识到在这里有很多命令需要使用。所谓的超长时间是与你预计的时间相比较而言。文件和目录管理在BASH(Bourne-AgainSHell,GNUZLinux发布时的默认Shen)

9、和微软的Windows命令提示行有很多相似之处,主要的相似在于我们使用的工作目录概念。shell提示输入一个命令,那么该命令会在当前的工作目录中执行。第一次登录shell帐户时,会进入你的home目录,这个文件夹一般包含你的个人文件,是一个私有的空间,如果没有特别指定访问权限,系统上的其他用户是不可进入该目录查看的。下表列出了一些最有用的基本命令,它们用于文件和目录的管理。命令名称描述pwd显示当前所在的工作目录(PWdZhomeZalexcd改变目录$Cdimages(images$pwd/home/alex/imagesimages$cdtmp(tmp$pwdtmp对于cd,有些有用的快捷

10、方式: 键入Cd或cd总能够让你回到home目录,然而更通用的用法是“cd”,因为可以通过使用“cd“images”,进入用户主目录下的image目录 键入“cd会让你回到本目录的上一级目录,注意,Cd和之间有空格 键入“cd.”,没有任何效果。然而要注意,代表当前目录,例如可以使用“cd./images”,进入当前目录下的images目录Is列出当前目录或指定目录下的所有文件和目录1$Isimages试一下“1ST”,显示与文件及目录相关的详细信息。选项“-a”显示隐藏文件和系统文件mkdir新建一个新目录!$mkdirdocuments(Cddocumentsdocuments$mkdir

11、/tmp/alexdocuments$cdtmpalex(alex)$pwdtmpalex一般的命令行应用程序没有输出任何文本的情况就是一个成功的操作。如果有错误发生,就显示一个信息CP文件复制命令语法:cp选项1源文件目标文件(CPmv移动或重命名文件命令语法:mv选项1源文件目标文件文件重命名:($mv把文件移到另一个目录:(mvimages/rm删除一个文件或者一个目录。使用-!选项会使用递归功能:($rm$Isimagesrm-rimages/(T$Is使用这个命令要慎重,尤其是以管理员的身份(这里指的是系统管理员)登录时,被删除的文件是不能恢复的。一个简单的“rm-rf/”命令足以“

12、洗白”你的整个文件系统命令名称描述可以通过专用的软件进行恢复,不过也不是十分有把握。命令名称描述locate在整个文件系统上找出指定的文件,该命令直接与UPdatedb关联:$locatehomealex/home/jesse/holiday_注意:命令locate完全依赖于索引,如果新建了一个文件,你是找不到它的,除非你使用下面的命令执行过数据库升级Updatedb更新文件数据库。注意,该命令需要使用管理员权限,因此,一般通过CrOnjob,就是计划任务(相当于Windows操作系统中的任务管理)来实现一个定时更新:-$mkdirnHolidaysinFrance-$locateFrance

13、Nofilefound:adatabaseupdateisrequired.一旦以管理员的帐户进入,就可以执行该命令:#UpdatedblocateFrance/home/alex/HolidaysinFrance这样便可找到新建文件man显示指定命令的使用帮助$manIs最后,可以使用CIear命令来清除屏幕上的所有文本,然后重新开始。用户和组管理对于管理员来说,首要的困扰就是在他们的系统上有哪些用户,这些用户要访问哪些资源。在这方面,基于UniX的操作系统提供了一个详细的用户和组的管理机制。超级用户帐户每一个操作系统中都有一个超级用户帐户,经常需要执行管理员级别的任务,这个帐户通常叫roo

14、l,然而在一些操作系统上也叫其他名字(例如admin或者甚至是toor)o超级用户能够访问系统中所有的文件和目录,有权读取、编辑和执行所有的文件,也可以改变文件的属性和访问权限。但是还是不推荐用机器的超级用户长期连接远程机器。实际上,一些操作系统(例如UbUntU)甚至都不允许你这么做。计算机安全的一个最基本的原理,即最小权限,你永远不允许做你分外的事情。换句话说,如果你只打算给一个使用你计算机的用户上网和使用OPenOffice编写文档的能力,那么为什么给他能够访问系统配置目录的权限呢?对用户授予比需要更多的权限只会导致系统的安全性和完整性被损坏。正是由于这个原因,所以强烈推荐你建立一个用户

15、帐号,这样做不仅方便限制机器上的个人用户,也是为了确保应用程序要运行在一个具有明确界定的安全环境中。用户帐户在LinUX文件系统中的配置目录中保存着系统用户的列表:etcpasswd,然而用户的密码并没有保存在该文件中。由于安全的原因,在大多数情况下,这些用户密码保存在一个独立文件etcshadow中,不过该文件还是提供了每一位用户的一些信息。在文件passwd中,每一行对应一个用户,语法格式如下,而且必须遵循此格式:一般是eic目录。name:password:IDzgroupID:comment:homedirectory:loginshell在实际的文件中,password”部分被“X所

16、替代,它指出密码实际保存在文件ZetcZshadow中。才alexns304584ale8ns304584*$catetcps3droot:x:0:0:root:/rootsblbashbln:x:1:l:bin:/bln:/sbin/nologindaemon:2:2:daemon:/sbin:/sbin/nologinadxn:x:3:4:adm:/var/adro:/sbinnologinlp:x:4:7:lpzvarspoolIpdzZsbinZnologinsync:x:5:0:sync:/3bin:/bin/syncshuedovn:x:6:0:shuedown:/sbm:/sbi

17、n/shuedownhalc:x:7:0:halt:/3bln:/sbiii/haltmall:x:8:12:mail:/vat:/spool/mail:/sbln/nologinnevs:x:9:13:news:/etc/nevs:uucp:10:14:uucpxvacspooluucp:/sbin/nologin增加一个新的用户就是只是在文件etcpasswd中添加这么一行。然而,你可能会发现手动处理稍微有点麻烦,在这种情况下,你会很高兴地去学习一个能够自动操作的程序,而且发布的版本中也包括这样的工具,即Useraddo对于这个命令,基本的语法是useraddusername,这将建立一个

18、新的用户帐户,同时包括默认的设置(当然也可以定制)。默认的设置包括:一个home目录,位于/home;没有有效期;默认的组;登录的Bashshell如果添加的帐户是用来运行服务,例如Nginx,则建议不要授予该用户帐户shell的访问权限,因此你要确定登录shell设置为nologin(通常的设置sbinnologin),因此,应该用以下格式命令添加该用户:useradd-shellsbinnologinnginx也可以定制该用户home目录的位置,比如定位到Nginx的安装目录:useradd-shellsbinnologin-home-dirusrlocalZnginxnginx最后这个n

19、ginx指的是要创建的这个用户帐户的名称。在帐户建立完成后,如果想对该帐户修改一些参数,可以使用usermod命令。允许对帐户名重命名,修改帐户密码,移动home目录到其他位置,等等。最后,可能还想删除一个用户帐户,可以通过命令USerdel来完成,格式很简单:USerdelusername,使用r选项还可以同时删除home目录O实际上这样写更稳妥:USeradd-S/SbinZnologin-1usrlocalnginxnginx记住,所有这些命令都可以通过man命令获取详细信息,从而得到帮助,例如:manuseraddo组管理除了用户帐户外,基于Unix的操作系统还提供了更高级的资源管理机

20、制一用户组。其目的在于让同一个组的成员对某一文件或目录有共同的访问权限,每一个进入该组的用户都继承该组的权限。尽管用户可以属于其他组(SeCOndarygroup),但是一个用户帐户至少属于一个组主要组(Primarygroup)o在实践中,用户组的列表保存在文件etcgrOUP中,在文件中,每一行代表一个组,它的语法描述如下:groupname:password:groupIDzuserlist用户组密码很少使用,在该文件中实际存储的是一个“x”,它表示该组没有密码。在每一行的结尾,你会看到属于该组的用户列表。下图是一个生产环境服务器的用户组文件。此外,如果想在系统中建立一个新的用户组,则有

21、两个选择:(1)在文件etcgroup中添加新的一行;(2)使用专用的groupadd命令来添加,它的语法很简单:groupaddgroupname,它也有一些典型的参数,可以通过mangroupadd了解。类似于系统用户管理,也可以找到命令groupmod和groupdel,分别用于修改和删除组。更重要的是,如何将一个用户添加到一个用户组?有两种方法:(1)手工编辑ctcgroup文件,将用户名添加到相应的组,在组的末尾添加上希望添加的用户;(2)可以使用下列命令来完成:usermod-append-groupsgroupnameusername你可能会指定一个或多个组。如果将选项-appe

22、nd移走,会得到以下结果:在命令中指定的组取而代之该用户现有的组。最后,可以通过命令groups来显示一个用户都属于哪些组。程序和进程在shell中运行一个程序不是简单地键入该文件的文件名。对于BaSh处理执行二进制和脚本文件的方法,有些不易察觉的细节,你需要理解一下。运行应用程序想执行程序或者脚本的时候,需要面对三种不同的情况。要执行的程序就在当前工作目录下。解决方法:在要执行的文件前面加上句点和斜线),这么做的原因是强迫ShelI在当前的工作目录中查找要执行的文件。示例如下:$cdprogramsprograms)$.my-app 要执行的程序不在当前的工作目录下,但你知道该文件的路径。解

23、决方法:键入该文件的完整路径。示例如下:/home/aIex/programsmy-app 襄执行的程序位于环境变PATH指定的值内。解决方法:直接键入文件名,而不用指出其路径。示例如下:开始使用nano文本编辑器,通常能够在系统目录usrbin找到(usrbin在PATH内)。-$nano注意,在运行shell命令时,shell的提示符是不会再出现的,除非该命令执行完毕。这种情况下会是个问题,如果有一个漫长的处理过程,在这个过程中你将无法做任何事情,因此,你可能会想在开始运行一个程序后,让它在后台运行,而不是在SheIl界面下完成执行,这也很容易,在执行的命令行后添加一个字符即可。示例如下:

24、tmp$cpmovies&62629tmp$6)Donecp-/movies/&一旦发送命令,该进程的pid(进程标识符)就会显示在屏幕上,并且回到shell提示符。一旦执行完毕,除了用于开启该进程的原始命令之外,还会出现一条信息,指出该命令执行完毕,系统服务许多运行在后台的应用程序(通常指的是可以通过services命令来启动的程序),都不是通过在命令后简单加上一个&字符,而是通过一个复杂的脚本来管理它们的启动和停止。这些脚本可以放置在各自的目录内,但最普遍的是在目录etcinit.d内。一些Linux发布版本中,例如RedHat,Fedora,CentOS和Mandriva,提供了serv

25、ice脚本,可以通过它来控制服务。通过使用servicenamecommand语法来实现,在这里,service是脚本命令,name指要操作的服务,command是下表中的命令之一。如果在你所用的发布版本中没有提供service脚本,也可以使用类似这样的语法来执行:etcinit.dnamecommando注意,init.d脚本不一定提供所有这些常用的命令O命令名称描述start启动指定的服务stop通过干净的方式(CIeanWay)停止指定的服务restart重新启动指定的服务reload重新装载指定服务的配置文件status显示指定服务的状态HB(OK (OK (OK S?alexns30

26、4584:-rtns23544servicenaedrestartStoppingCaMed:Startingcased:rootfns23544*tetcinit.d/aysqldstatusmysqld(pid12933)isrunning.rtns203544*#servicehttpdreloadReloadinghttpd:rootns23544*尝试一下service-status-all,它会列出所有系统服务的当前状态。进程管理正如以前提到的,系统会为运行在计算机上的每一个进程提供一个数值,这个数值就是进程标识符(Pid)。毫无疑问,Pid对于各种不同的环境都很重要,有些重要性可

27、能还需要你去进一步发现。查找pid首先,如何查找发现一个进程的pid?尽管有许多方法可以得到它,但是使用最多的还是一个简单的工具一一PS0它有很多选项(可以和管道机制组合)能够帮你找到进程的各种详细信息。psauxIgrepsshd命令可以分为三部分。1. PSaUX命令列出当前系统中运行的所有进程。2. I(PiPe)是重定向管道。重定向命令的输出,将管道命令之前的命令输出重定向到管道命令后的命令中,作为该命令的输入。运行psaux会产生一个很长的进程列表,但是因为这里只需要显示一个进程,因此使用了grep过滤命令。3. grepsshd从PSaUX命令的输出中获取只包含指定关键字的行。换句

28、话说,grep负责的是过滤,保留了包括SShd的行。alexexample$psauxThrltItnotdplydonthtdrdovtput.Ititapipdtothnxcommend.“TbI9l$.M,“VVJMH-WJtOMwiY9IM-1,”.!4KkI19111.7M41Y51TK1l(7v4vMrl*ZH*CWl“ttM.1IM,川P)grepphpGepfiltcstinput:onlyllnfcontainingphprrM11N,%l?/“2SI”一P111.X皿1T1,S1lf/“sM”占管理员最好的朋友一top如果你的系统上运行着一个高流量的网站,那么另一个工具特别

29、有用,它就是top,它列出了在当前系统下运行的所有进程,并且列出了进程的pid,默认顺序以进程对CUP的使用情况排序。这个显示每秒钟会自动刷新一次,直到你中断它的执行(例如可以通过执行Ctrl+C键中断)或者是通过按Q键退出应用程序。可以通过这个工具了解和追踪最消耗资源的进程。大写字母部分提供了大量有用的统计数据,主要是当前系统上资源的使用情况,例如正常运行的时间、正在活动的用户、平均负载、内存和CPU的使用情况等。杀进程如果一个正在执行的命令发生错误并且不返回提示符,可以使用一种解决方法,即按快捷键Ctrl+C中断这个应用程序。通过kill命令,同样的操作能够应用于后台进程。有一点需要说明,

30、不能在kill之后指定进程的名称,而是为它提供该程序的Pid,这么做的原因显而易见,同一个程序可能会被执行多次,它们的进程名相同,但每次执行的Pid却不同,所以一个程序名不一定总是对应于独一无二的进程:$kill12075如果想以其他指标排序,可以杳看mantop,该命令有许多用法。此外,如果执行该命令没有任何结果输出,也没有必要担心。实际上,如果输入的是一个无效的Pid,那么可能kill命令才会提示你。kill命令是简单的发送一个信号给指定进程,这并不一定意味着该进程已成功停止。如果该程序被锁定,那么该信号不会响应进程的执行,程序将继续运行。不要急,有一种简单的处理方法能让你恢复信心,即选项

31、“-9”,它能够强迫进程立即结束。$kill-912075最后,正如你所想的,在某些时候你可能需要依次结束多个进程。例如,需要杀掉Apache产生的所有进程。如果是这样,我们可以使用一个稍微不同的命令一killall,它与kill命令稍有不同,killall命令接受进程名作为参数,而不是pid0killallhttpd了解LinUX文件系统Linux操作系统有自己蛆织文件的方法,也是一种非常特殊的组织方法,近似于历史悠久的文件系统等级标准FHS(FileSyStemHierarchyStandard)根据FHS官方的文档,这个标准的作用是:软件预定(PrediCt)安装文件和目录的位置;用户预

32、定(PrediCD安装文件和目录的位置。尽管FHS的原始标准规范是在1933年公布的,但它仍然供现代发布的LinUX使用,不过略有修改,使用的是修订版本。目录结构不像Windows操作系统一样一一在Windows操作系统中,所有文件路径总是以一个字母开头(可以想象一下,如果系统中有多达26个驱动器的时候会是什么情况?)基于FHS的文件系统有一个共同的父目录,该父目录叫根(rool)目录,也就是众所周知的(斜线字符)。所有文件和目录(不管是设备、驱动器或分区,它们挂载于本地)都是根目录的子目录(Chikken),因此在本书中,所有的绝对路径总是以斜线开始的(见下表)。让我们现在开始运行cdf要了

33、解通过FHS定义的许多子目录,接着运行Iso请注意,该目录结构纯粹是传统的目录结构,你可以在该目录下或者其他目录下放置你自己的文件和建立更多的目录。路径名称描述/根目录:不要与/root混淆,根目录下通常没有文件,尽管没有任何人阻止你这么做/bin二进制文件目录:系统中的可执行二进制文件或脚本文件通常都放在该目录,该目录对于系统上的所有用户可见。例如,一些常用的命令Is、CP或者mv等都可以在该目录下找到/bootboot目录:存放系统启动时的关键文件dev设备:该目录存放设备文件和特殊文件,更多的信息参见下一节/etc配置文件目录:系统中服务和应用程序的配置文件目录,你可能会经常浏览这个目录

34、,例如,在需要编辑Nginx服务器的设置或添加虚拟主机的时候/home主目录:该目录包含本系统上除root用户外其他所有用户的主目录。例如,目录homealex为系统用户alex的home目录/lib库文件目录:用于存放/bin和Zsbin目录下的二进制文件需要的共享库文件和内核模块/media可移动介质目录:该目录能使你轻松访问可移动介质的目录,挂载点用来挂我CD-RoM、USB等设备mnt临时挂载文件系统:该目录适合管理员临时挂载个文件系统/opt可选的软件安装包:埋论上,这个目录应该安装一些应用程序文件和附加的安装包(在安装系统是没有默认安装),但是在实际使用中,该目录基本不使用/pro

35、c内核和进程信息的虚拟文件系统:该目录提供了访问虚拟文件系统的桥梁,它包含各种状态信息和关于所有进程的详细信息/rootroot用户的home目录:用户root,也就是众所周知的超级用户(Superuser)它不像普通用户一样存储在/home目录下的home目录,取而代之的是/root目录,即斜线和root,注意,这里的root不能和根(root)目录a混淆Zsbin系统二进制文件目录:该目录中的工具供系统管理员使用,因此一般情况下只有root用户才可访问。例如,程序ifconfig,halt,service等其他许多的程序都能在这里找到srv服务器数据:该目录用于存放来自于系统的服务产生的数

36、据。就像其他目录一样,它只是占用一个目录而已,该目录很少使用tmp临时文件命令:在程序执行时,不需要保护的文件应该放在这里。实际上,许多操作系统在重新启动后就会清除该目录中的内容续表路径名称描述usr只读的用户数据:该目录是第二个层次分级目录,它提供了只读的共享数据。usr目录包含下列目录: usrbin不重要的二进制命令和脚本文件,所有用户均可使用(例如wget,gzip,firefox等) /USrZincIude该目录下是头文件,如来自C的库文件,有些程序在编译时会包含该目录下的这些文件 usrlib由usrbin和usrsbin下的程序调用的库文件 usrsbin不重要的系统二进制命令

37、和脚本文件,对于所有的用户是可用的(例如,useradd和ntpdate等) ZusrZshare与系统结构体系无关的数据文件 usrsrc内核源代码和安装应用程序的源代码 usX11R6与XWindOW系统(VIlreleaSe6)-相关的文件usrloc一个第三层的目录结构,仅用于本地数据Zvar变化的文件:在运行应用程序或是服务中,这些文件会发生预期变化,例如,logfiles,cache,spool,等等。它有自己的层次结构: varlib应用程序或更普遍的说法是操作系统依赖的变量状态信息。注意,MySql数据库文件的变量信息通常存储在varlibmysql ZvarZIock锁文件(

38、IoCkfile)用于应用程序之间的同步资源访问 varlog由程序、服务或内核产生的日志文件 ZvarZmaiI基于用户邮件的文件O在更多的系统中,varmail也只是一个简单的快捷方式,实际文件位于varspoolmail中 varrun运行中的可变数据。在系统重新启动后原有的数据将消失,该目录提供的信息是从系统被启动开始到现在的有关信息 varspool这个目录放的文件是要处理的文件,例如邮件和打印作业 vartmp一个占位符,用于存放系统重新启动时不应删除的临时文件特殊文件和设备你可能在目录结构中注意到,Linux操作系统有一个预留目录(dev),用于存放“设备文件”。事实上,这个目录

39、包含的元素称为节点,每一个节点在系统上代表为一个不同的设备,它们是实际的硬件设备或者是伪设备,无论哪种情况,作为文件系统的一部分将它们列出来,其目的是配合程序和服务的输入和输出,使它们更加便利一一软件开发人员能够方便地访问这些设备,因为他们要读写文件。应该学习设备文件,很多时候需要使用它,或者说迟早会使用到它们。设备类型在dev目录内,可能会有大量有效的设备,不幸的是,它们中大多数设备都有一个不出名的名字,几乎不可能看出其用途,设备文件的命名采用的是LinUX操作系统的协定。由于在系统中可能存在很多设备,因此我们将仅识别出最常见的一些。设备的名称由一个前缀组成,按照惯例,这个前缀用于定义设备的

40、类型,并且如果同一类型的设备有多个出现在当前系统中,那么在设备之后会有一个数字或者是字母,以示区分。dabxns3(M584zdcvale6n03O4584$cd dev(ale6n93O4584 dev】$ Isdln-controldln-tDQito 41rojlock id fullptycPCyc, Ptyca PCyCb Ptycc PCyCd PCyCe ltct PCydo Ptydl PCyd2PWfptyo ptysl Ptya2 ptys3 Ptys4 PC”5 ptys6 pcy,7 Pty8 pcya9Pty6PCyx7 pty8 Pty9 Ptyxa Ptyi Pt

41、yxc Ptyxd pcy Ptyxl PtyyO01234-56789y2yiy2yz2y2yzy2y2y2 VvCtCVVtrVtvVtrV 匕 Ctc 匕匕匕匕 C 匕匕tcyc3Ctyira yvd CWrD ccyv ttyc5 ttyrc ttyvf ttyc tcyrd CtyxO ttyc7 tyre ttyl ttyc ttyrf tcyx2 tcyc9 cys yx3 ttyca CtySO ttyx4 tcycb ctysl ccyx5 ttycc ttySl ttyx6 ICyCd c2 CCyX7下面列出最常见设备文件类型的常规前缀: cdromCD和DVD-ROM驱

42、动器 fd软盘驱动器hdIDE连接设备,例如硬盘驱动器和CD-ROM mdMetadisks和RAlD设备,例如硬盘 ramRAM磁盘 sdSCSl连接大容量存储设备 usbUSB连接设备伪设备列在目录dev目录下的一些设备并不相当于实际的硬件设备,相反,它们是为了提供给管理员和开发者访问特殊资源的简单输入或是输出。出于这个原因,我们称它们为“伪设备”(PSeUdOdeViCe)。下表列出最常用的伪设备,简单描述如下。伪设备描述ZdevZnuIlNulI设备这个伪设备经常被称为黑洞(blackhole),因此它的目的是忽略发送给它的一切数据。向它写数据时,它始终报告写操作是成功的;向它读取数据

43、时,该设备总是返回没有数据。如果你不想要将一个程序输出重定向到任何地方,这是特别有用的。换句话说,如果你想确保一个命令执行,但又不想把文字输到屏幕上,则可以像下面这样:(catdevnullZdevZrandomZdevZurandom随机数发生器流设备产生随机数数据流。ZdevZrandom产生真实的随机数,而ZdevZurandom提供伪随机数。它们产生的是二进制数据,来自ZdevZrandom和ZdevZurandom的数字不能够显示在终端控制台(它们看起来像是垃圾数据流),这些设备通常由开发人员使用,希望收集到可信(reliable)的随机数ZdevZfullFull设备该伪设备是一个

44、流设备,向它写入时,会返回错误,因为它总被认为是满的;用户或程序读取它时,它返回一个无限空字符流。伪设备devfull为管理员和程序员提供了一种操作,一旦被触发就会返回错误。一)$echoHello!devfullbash:echo:writeerror:Nospaceleftondevice建议进一步参见书后的译者注1续表伪设备描述devzeroZero数据与devnull极其相似。写完成后,zero伪设备总是提供成功的返回代码。然而,在从这个设备上读取时,它输出一个无限空字符流。有各种各样的例子可以证明读设备/dev/zer。有用,例如,作为程序的输入为它提供数据,将生成一个指定大小的文件

45、,或者是为了格式化存储设备而写入挂接存储驱动器正如你可能在前面几节已经注意到,在dev目录中,有些可用的设备是存储设备,例如硬盘存储器、固态硬盘(SSD)、软驱或CD-ROM0然而访问它们提供的内容不只是简单地使用Cd命令进入驱动器访问,存储驱动器需要挂接到文件系统,换句话说,驱动器需要附加到一个固定的目录。-$cddevmdl-bash:cd:devmdl:isnotadirectory.$mountdevmdlmntaIexdrive$cdmntalexdrivealexdrive$IsDocumentsMusicPhotosVideos命令mount允许你将一个驱动器(第一个参数,devmdl)附加到系统中现有的目录(第二个参数)。一旦驱动器被挂载,你就可以使用文件系统的任何指令访问该驱动器。在现代的LinUX发行版本中,CD-ROM和其他一些常见设备能够由系

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号