最近有个客户在AIX下装net-snmp遇到了些麻烦,那些搞support的居然都搞不定,结果公司销售的人七找八找就找到我头上了。花了点时间,替他们搞定了问题,索性做得更漂亮些,让net-snmp可以像系统自带的服务一样启动。

在Linux下,启动一个服务,一般是运行/etc/init.d/snmpd start,或者service snmpd start,或者/etc/rc.d/snmpd start;可以用类似/etc/init.d/snmpd status的命令来查询服务状态。这样启动服务,是很可靠,但是,所有的这样的服务,每个都需要一个脚本放在/etc/init.d/这样的目录下,如果服务是发行版自带的还好,一般都提供了这样的脚本,否则就不爽了。自己写守护进程脚本,首先就费时,然后还不敢保证万无一失。

AIX这方面真的是做得很好,所有的服务都是让一个叫做System Resource Controller的东东管理的,比如说启动的时候自动加载,挂了的时候重新运行等等。我用下面的命令就轻松的为客户建立了叫做net-snmp的守护进程。

    mkssys -s net-snmp -p /opt/sbin/snmpd -R -Q -u 0 -a "-f" -S -n 15 -f 9

简单解释下

  • -s net-snmp:这个服务叫做net-snmp
  • -p /opt/sbin/snmpd:其实是运行这个文件的
  • -R:不小心挂了就给我重新启动
  • -Q:只准运行一个snmpd进程
  • -u 0:用root身份运行
  • -a "-f":传递个-f的参数给snmpd
  • -S -n 15 -f 9:终止服务的时候用SIGNAL,和谐终止发送15(SIGTERM),强制终止发送9(SIGKILL)

然后,就可以用

startsrc -s net-snmp

来启动,用stopsrc来终止,用lssrc来查看了,跟AIX自带的服务没什么区别了!如果说要是有点不爽的,恩,那就是为什么建立的时候要叫做m(a)k(e)s(ub)sys(tem),而后面运行的时候明显要叫做starts(e)r(vi)c(e)呢?

不管怎么说,客户很满意。