最近增加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是自己编译的,所以我想问题很大可能是出现在环境变量。于是加了两行代码,加完后如下:
-
#!/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
-
-
TPATH=$PATH
-
. /etc/rc.d/init.d/functions
-
PATH=$TPATH
-
-
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
-
;
改完后的代码使用/etc/init.d/gmond执行没有任何问题,所以能够很肯定是环境变量PATH的问题了。前文说过我的python是自己编译的,为了不影响yum的时候,我软连接到了/usr/local/bin/python,而使用service gmond start去执行的时候PATH变量是service脚本定义的,而并非如何当前shell用户自己定义的,所以我又改动了代码如下就没问题了:
-
#!/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
-
PATH=/usr/local/bin:$PATH
-
-
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
-
;
阅读(5868) | 评论(2) | 转发(0) |