• NFS 开机自动启动(转载 http://www.2cto.com/os/201204/127255.html )


    NFS开机自动启动及其原理
     
        NFS服务器端已经配置好了,但机器重启以后我们还要重新开启NFS服务。为了不这么麻烦,我们要让NFS和portmap服务在开机时自动启动,这样就会避免出现mount clntudp_create: RPC: Program not registered这样的错误了。
      让脚本在开机时自动运行需要对linux系统的启动过程有所了解。我们知道系统加载内核以后运行的第一个程序就是init,所以它的PID永远是1,你自己用top命令查看一下就知道了;而init程序首先就要读取/etc/inittab文件,init程序就根据这个文件的内容按照顺序创建进程。  www.2cto.com  
      我们打开这个文件,不去管以#开头的注释文字,共有7个部分:我们需要关注的是第一部分和第二部分。
        

     
        Init程序首先读取第一部分,确定shell的运行级别,这里的运行级别为3。Shell一共有7个运行级别,在/etc/inittab文件开头的注释部分对这7个运行级别做了详细解释,对shell运行不了解的话这可是要必看的。 
      然后init程序读取第二部分,运行脚本/etc/rc.d/rc.sysinit,这个脚本主要包含有系统的初始化命令。
      接着就要根据确定的shell运行级别来运行对应目录里的脚本,以启动相关服务。我的机器的运行级别是3,init就根据这个级别号运行/etc/rc.d/rc3.d目录里的脚本。
      其余几个部分都是关于组合键、UPS电源等方面的内容,感兴趣的话可以看一下。
      说到这里我们知道了,init程序根据运行级别号来启动/etc/rc.d目录中对应目录里的脚本,以启动相关服务。这里是运行/etc/rc.d/rc3.d目录里的脚本,如果运行级别为5,则运行/etc/rc.d/rc5.d目录里的脚本。
      我们来看一下/etc/rc.d目录里的文件。
        

     
       可以看到/etc/rc.d目录里一共有3个普通文件和8个目录文件。这8个目录中init.d目录是各种程序和脚本的存放目录,而rc0.d到rc6.d这7个目录里的文件都是init.d目录里程序文件的链接文件,只是被赋于了相应的运行级别。来看一下/etc/rc.d/rc3.d目录里的文件:   


     
       我们想要开机就启动的NFS服务和portmap服务分别在图片中第二列的第一行和最后一列的第三行,即K20nfs和S13portmap。  www.2cto.com  
      我们看到目录里所有文件都是以K或S开头,然后跟一个数字,然后才是文件名。这是什么意思?S即start,开启服务,K即kill,关闭服务。系统确定运行级别以后,进入相应的rcN.d目录,执行以S开头的文件以启用相关服务进程,而且是按照S后面的那个数字的顺序依次执行;而更换运行级别时,会先执行以K开头的脚本,再执行以S开头的脚本,执行顺序都是按照他们后面的数字的顺序;退出系统时,就依次执行以K开头的文件关闭相关服务。
      那我们知道了,在级别为3的这个运行级别上,nfs服务没有默认没有随开机而启动,而portmap服务则随开机而启动,是被系统第13个启用的服务;我们手动启动nfs服务以后,在关机的时候nfs服务是第20个被关闭的服务。
      这里有了一个疑问:这些服务的启用和关闭顺序是哪里限定的?答案是程序自身。我们可以打开portmap和nfs服务的脚本看一下,脚本路径为/etc/rc.d/init.d/ portmap (nfs)。输入命令:less  /etc/rc.d/init.d/ portmap (nfs)
        
        
     
       如截图所示,portmap服务在345三个级别上运行,启用顺序为第13,关闭顺序为第87;nfs服务不在任何运行级别上启用,启用顺序为第60,关闭顺序为第20。(服务不在任何运行级别上启用时,运行级别那个字段用-代替。)
       很明显,想要让NFS服务自动启用,就需要把相应级别对应的rcN.d目录里的nfs服务由K状态更改为S状态。由于运行级别为2时,系统不运行NFS,我们只需要在3、4、5三个级别上让NFS服务随开机启动。(级别4根本就没有启用,让NFS服务在级别4上启用不知道有什么用;只不过大家都这么说,我也就随大流。)  www.2cto.com  
      怎么更改?系统提供了一个用起来很方便的方法:使用chkconfig命令。Chkconfig主要用来查询和管理服务在不同运行级别上的启用情况,需要注意的是:chkconfig命令并没有更改程序脚本里的内容,只是更改了程序在rcN.d中的链接名称的开头字母,以此来确保其在相应运行级别上开启或关闭。
      输入chkconfig命令,直接敲回车,可以明确看到它主有4种作用:
     
        Chkconfig --list name  列出指定服务的运行级别情况
        Chkconfig--add name  增加一个服务
        Chkconfig --del name  删除一个服务
        Chkconfig   [--level <levels>]  <name>  <on|off|reset>  更改/重设指定服务的运行级别
      我们输入chkconfig --level 345 nfs on,即可使NFS服务在运行级别3、4、5上自动运行。 
       
     
     
     
    作者 zhl_shanghai
  • 相关阅读:
    Samba 4.0 RC3 发布
    SymmetricDS 3.1.7 发布,数据同步和复制
    Express.js 3.0 发布,Node.js 的高性能封装
    GIFLIB 5.0.1 发布,C语言的GIF处理库
    jQuery UI 1.9.1 发布
    SVN Access Manager 0.5.5.14 发布 SVN 管理工具
    DynamicReports 3.0.3 发布 Java 报表工具
    HttpComponents HttpClient 4.2.2 GA 发布
    AppCan 2.0 正式发布,推移动应用云服务
    Ruby 2.0 的新功能已经冻结
  • 原文地址:https://www.cnblogs.com/kramer/p/3088844.html
Copyright © 2020-2023  润新知