PythonTip >> 博文 >> chinaunix

解决ganglia增加python模块后启动问题的过程

zihua 2014-01-13 18:01:56 点击: 789 | 收藏


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

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

比如启动gmond服务,提示成功。但ps下却没有gmond的进程。于是研究了下这个gmond.init文件。
   
service gmond stop  倒是没有什么问题,手动执行gmond命令执行也没有问题,关键在于start参数,所以解决问题的代码,就主要是下面几行了:

  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. RETVAL=0

  12. case "$1" in
  13.    start)
  14.       echo -n "Starting GANGLIA gmond: "
  15.       [ -f $GMOND ] || exit 1

  16.       daemon $GMOND
  17.       RETVAL=$?
  18.       echo
  19.       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/gmond
  20.         ;

由于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.         ;



原文链接:http://blog.chinaunix.net/uid-27571599-id-4047228.html

作者:zihua | 分类: chinaunix | 标签: python | 阅读: 789 | 发布于: 2014-01-13 18时 |