问题描述: 发现运行的进程中有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