解决Ganglia增加Python模块后启动问题的过程

最近增加Ganglia的Python模块后,发现Ganglia官方源码包提供的gmond.init文件不好用了。

使用的Python是自己编译的,如果Python是系统rpm包安装的就没有这个问题了。

比如启动gmond服务,提示成功。但ps下却没有gmond的进程。于是研究了下这个gmond.init文件。

service gmond stop  倒是没有什么问题,手动执行gmond命令执行也没有问题,关键在于start参数,所以解决问题的代码,就主要是下面几行了:

#!/bin/sh
#
# chkconfig: 2345 70 40
# description: gmond startup script
#
GMOND=/usr/sbin/gmond
# TMPDIR set to SysV IPC ramdrive to avoid include processing failures
TMPDIR=/dev/shm
export TMPDIR
. /etc/rc.d/init.d/functions
RETVAL=0
case "$1" in
start)
echo -n "Starting GANGLIA gmond: "
[ -f $GMOND ] || exit 1
daemon $GMOND
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/gmond
;

由于Python是自己编译的,所以我想问题很大可能是出现在环境变量。于是加了两行代码,加完后如下:

  1. #!/bin/sh
  2. #
  3. # chkconfig: 2345 70 40
  4. # description: gmond startup script
  5. #
  6. GMOND=/usr/sbin/gmond
  7. # TMPDIR set to SysV IPC ramdrive to avoid include processing failures
  8. TMPDIR=/dev/shm
  9. export TMPDIR
  10. TPATH=$PATH
  11. . /etc/rc.d/init.d/functions
  12. PATH=$TPATH
  13. RETVAL=0
  14. case "$1" in
  15.    start)
  16.       echo -n "Starting GANGLIA gmond: "
  17.       [ -f $GMOND ] || exit 1
  18.       daemon $GMOND
  19.       RETVAL=$?
  20.       echo
  21.       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/gmond
  22.         ;

改完后的代码使用/etc/init.d/gmond执行没有任何问题,所以能够很肯定是环境变量PATH的问题了。前文说过我的python是自己编译的,为了不影响yum的时候,我软连接到了/usr/local/bin/python,而使用service gmond start去执行的时候PATH变量是service脚本定义的,而并非如何当前shell用户自己定义的,所以我又改动了代码如下就没问题了:

  1. #!/bin/sh
  2. #
  3. # chkconfig: 2345 70 40
  4. # description: gmond startup script
  5. #
  6. GMOND=/usr/sbin/gmond
  7. # TMPDIR set to SysV IPC ramdrive to avoid include processing failures
  8. TMPDIR=/dev/shm
  9. export TMPDIR
  10. . /etc/rc.d/init.d/functions
  11. PATH=/usr/local/bin:$PATH
  12. RETVAL=0
  13. case "$1" in
  14.    start)
  15.       echo -n "Starting GANGLIA gmond: "
  16.       [ -f $GMOND ] || exit 1
  17.       daemon $GMOND
  18.       RETVAL=$?
  19.       echo
  20.       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/gmond
  21.         ;

相关推荐