问题描述: 发现运行的进程中有rpc.statd服务,对这个服务很是不了解,就进行探索,发现,在 linux中的 /usr/sbin 目录中有两个文件 rpc.rstatd 和 rpc.statd, 文件名非常相象,他们各自是干啥的呢?

    解答:
    在 linux的 /usr/sbin 目录中有两个文件 rpc.rstatd 和 rpc.statd, 文件名非常相象,但所起的作用是不同的。

    用途 :
   1. 执行 /usr/sbin/rpc.rstatd 命令会启动 rstatd 后台程序,它是一个服务器,可以从系统核心中获取系统性能统计的相关信息,将结果返回给调用程序。 rstatd daemon 通常是由 inetd daemon 启动的。
目前在进行压力测试时,用户经常在客户端通过使用 load runner 软件来收集应用或数据库服务器的性能数据。 其就是通过给服务器上的 rstatd 后台程序发请求来实现的。
   2. /usr/sbin/rpc.statd 命令会启动 statd 后台程序。 在 NFS 环境中 statd daemon 与 lockd daemon 相结合,为锁机制提供 crash 和 recovery 功能。 statd daemon 除负责维护相关的连接信息外,还监控 /var/statmon/sm 目录, /var/statmon/sm.bak 目录和 /var/statmon/state 文件中的状态信息。 statd 通常是在 lockd 之前启动, statd daemon 的启动和停止是通过 调用系统的 SRC 命令来实现的。

    启 / 停方式 :
    1. 启/停 rstatd
    a. 启动 rstatd
a.1 首先编辑 /etc/inetd.conf 文件, 删除 rstatd 行前的注释符,将该文件存盘。
#vi /etc/inetd.conf
rstatd sunrpc_udp udp wait root /usr/sbin/rpc.rstatd rstatd 100001 1-3
a.2 刷新 inetd daemon
#refresh –s inetd

    b. 停止 rstatd
b.1 编辑 /etc/inetd.conf 文件, 在 rstatd 行前增加注释符,将该文件存盘。
#vi /etc/inetd.conf
#rstatd sunrpc_udp udp wait root /usr/sbin/rpc.rstatd rstatd 100001 1-3
b.2 刷新 inetd daemon
#refresh –s inetd

   2. 启/停 statd
   启动 statd
# startsrc –s rpc.statd
   停止 statd
# stopsrc –s rpc.statd

   检查方法 :
1 .检查 rstatd 是否活动。
a. 使用 SRC 命令
#lssrc –ls inetd
Subsystem Group PID Status
inetd tcpip 10086 active

Service Command Description Status
rstatd /usr/sbin/rpc.rstatd rstatd 100001 1-3 active
wsmserver /usr/websm/bin/wsmserver wsmserver -start active
time internal active

b . 在 portmap 中也会对 rstatd 进行登记
# rpcinfo –p |grep rstatd
program vers proto port service
100001 1 udp 32935 rstatd
100001 2 udp 32935 rstatd
100001 3 udp 32935 rstatd

    2 .检查 statd 是否启动
    a. 使用 SRC 命令
# lssrc –s rpc.statd
Subsystem Group PID Status
rpc.statd nfs 13682 active

    b. 检查进程是否存在
# pd –ef |grep stat
daemon 13682 6044 0 Oct 28 - 0:00 /usr/sbin/rpc.statd -d 0 -t 50