NFS服务器端已经配置好了,但机器重启以后我们还要重新开启NFS服务。为了不这么麻烦,我们要让NFS和portmap服务在开机时自动启动,这样 就会避免出现mount clntudp_create: RPC: Program not registered这样的错误了。
让脚本在开机时自动运行需要对linux系统的启动过程有所了解。我们知道系统加载内核以后运行的第一个程序就是init,所以它的PID永远是1,你自 己用top命令查看一下就知道了;而init程序首先就要读取/etc/inittab文件,init程序就根据这个文件的内容按照顺序创建进程。
我们打开这个文件,不去管以#开头的注释文字,共有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。
我们看到目录里所有文件都是以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上启用不知道有什么用;只不过大家都这么说,我 也就随大流。)
怎么更改?系统提供了一个用起来很方便的方法:使用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上自动运行。
分享到:
相关推荐
内附:Linux NFS服务器及自动挂载 实验抓图,配置解释文档。
NULL 博文链接:https://dbzone.iteye.com/blog/649514
NFS数据实验的实验原理win2003.pdf 学习资料 复习资料 教学资源
NFS数据实验的实验原理 2003.pdf 学习资料 复习资料 教学资源
NFS服务及自动挂载和验证
Linux nfs Linux nfsLinux nfs
nfs服务端nfs-kernel-server,nfs-common安装包 以及所需依赖。 NFS服务端的安装(服务器...NFS 服务都是通过 RPC 来具体实现的,所以要正常使用NFS服务,需要启动 rpcbind来实现端口的映射工作。 NFS客户端nfs-common
NFS文档 NFS最全文档 NFS详解文档NFS文档 NFS最全文档 NFS详解文档NFS文档 NFS最全文档 NFS详解文档
配置NFS服务器启动mini2440图解
Centos7 nfs安装rpm包及其依赖包
nfs服务端root权限安装并启动nfs服务器(需要先安装并启动portmap服务)及编辑/etc/exports配置nfs访问权限.192.168.192.128:/nfs_share(rw,sync) nfs客户端挂载共享目录在本地目录(注意关闭防火墙哦): mount -t ...
要想每次启动机器的时候自动挂载,可使用命令 vi /etc/fstab 编辑,在最后面加上 192.168.109.130:/var/ftp /nfs/ftp nfs defaults 0 0 ,保存退出。这样在每次启动的时候就会自动挂载 192.168.109.130:/var/ftp 这...
本文比较详细的介绍了利用TQ2440ARM9开发板作为开发平台,如何挂载NFS文件系统进行启动开发板上的linux系统,这种方法在其他的开发板上都可通用!
本文档编写于2020-08-22,主要讲述了uboot通过nfs启动内核(kernel)的Uboot和kernel的配置,以及nfs服务的搭建,最后成功的启动kernel。
一、NFS服务器的安装 检查linux系统中是否安装了nfs-utils和portmap两个软件包(RHEL4系统默认已经安装了这两个软件包) 命令#rpm –q nfs-utils portmap 二、查看NFS服务器是否启动 命令#service nfs starus #...
NVF4与NFS23的区别.
内涵NFS服务端安装程序
linux系统nfs安装包
Centos6.2离线安装NFS Ubuntu14.04离线安装NFS