portmap启动故障解决


在linux上面作NFS、NIS或者是httpd等都须要安装portmap,可是安装完portmap以后不能启动服务。linux

启动报错信息以下:centos

#service portmap status服务器

portmap dead but subsys locked,翻译为portmap进程死掉,系统锁定。网络

#service portmap stopapp

#service portmap starttcp

一切的方法所有用到了,包括百度到的删除/var/lock/subsys/下的portmap都无效,仍是一样的错误信息。无赖之下看日志文件ide

/var/log/messagesspa

搜索了一下关于portmap的,显示以下信息:翻译

Jul 16 16:49:34 portmap[3964]: cannot bind udp: Addressalready in use日志

Jul 16 16:50:04 portmap[4100]: cannot bind udp: Addressalready in use

Jul 16 16:50:13 portmap[4154]: cannot bind udp: Addressalready in use

字面意思是地址被占用,初步估计是端口被占用了,因此不能启动!

#rpcinfo –p localhost

   program vers proto   port service

   100000   4   tcp    111 portmapper

   100000   3   tcp    111 portmapper

   100000   2   tcp    111 portmapper

   100000   4   udp    111 portmapper

   100000   3   udp    111 portmapper

   100000   2   udp    111 portmapper

   100007   2   udp    953 ypbind

   100007   1   udp    953 ypbind

   100007   2   tcp    956 ypbind

   100007   1   tcp    956 ypbind

看到portmap的启动端口是111,那么咱们再查看一下究竟是哪支程序占用了111端口,致使端口冲突使得portmap不能启动。

# lsof -i:111

COMMAND  PID USER  FD   TYPE DEVICE SIZE/OFF NODENAME

rpcbind 4568  rpc  20u  IPv4  25958     0t0  UDP *:sunrpc

rpcbind 4568  rpc  22u  IPv4  25963     0t0  TCP *:sunrpc (LISTEN)

rpcbind 4568  rpc  23u  IPv6  25965     0t0  UDP *:sunrpc

rpcbind 4568  rpc  25u  IPv6  25968     0t0  TCP *:sunrpc (LISTEN)

看到了吧是rpcbind这个罪魁祸首,赶快行动吧!直接kill吗?NO,仁慈点吧(kill以后估计会有更大的麻烦,为了这个折腾了N久,重装过N次的系统,真想直接kill了)。

#service rpcbind stop            直接中止服务

#service portmap start

#service portmap status

portmap (pid 20863) is running...       服务真的启动了耶

#service rpcbind start    再次启动rpcbind服务

#service rpcbind status

rpcbind (pid  20956) is running...          两支服务都启动了,而且互不相干了。

其实rpcbindportmap是一样的功能。在centos5及如下版本的时候是portmapcentos6的时候用rpcbind取代了portmap。难怪不的启动portmap的时候报错端口被占用,而且就是rpcbind占用的。若是你是centos6系统的话不必装portmap了。


Portmap主要是作端口映射服务器,将RPC程序号转换为DARPA的协议端口号。在使用RPC调用时它必须运行。

portmap进程的主要功能是把RPC程序号转化为Internet的端口号

当一个RPC服务器启动时,会选择一个空闲的端口号并在上面监听(每次启动后的端口号各不相同),同时它做为一个可用的服务会在portmap进程注册。一个RPC服务器对应唯一一个RPC程序号,RPC服务器告诉portmap进程它在哪一个端口号上监听链接请求和为哪一个RPC程序号提供服务。通过这个过程,portmap进程就知道了每个已注册的RPC服务器所用的Internet端口号,并且还知道哪一个程序号在这个端口上是可用的。portmap进程维护着一张RPC程序号到Internet端口号之间的映射表,它的字段包括程序号、版本号、所用协议、端口号和服务名,portmap进程经过这张映射表来提供程序号-端口号之间的转化功能。

若是portmap进程中止了运行或异常终止,那么该系统上的全部RPC服务器必须从新启动。首先中止NFS服务器上的全部NFS服务进程,而后启动portmap进程,再启动服务器上的NFS进程。

但portmap只在第一次创建链接的时候起做用,帮助网络应用程序找到正确的通信端口,可是一旦这个双方正确链接,端口和应用就绑定,portmap也就不起做用了。但对其余任何第一次须要找到端口创建通信的应用仍然有用。

简单的说,portmap就是应用和端口的婚姻介绍人,双方成事了之后,媒婆就没用了。

相关文章
相关标签/搜索