Puppet init脚本不会创建pid文件?

qua*_*nta 5 bash init.d puppet sysv

  • CentOS 5.4版(最终版)
  • puppet-server-2.7.19-1.el5 从puppetlabs repo安装.

puppetmaster是成功启动,但它不会创建pid文件.这是[ FAILED ]停止时消息的原因:

/etc/init.d/puppetmaster stop
Stopping puppetmaster:                                     [FAILED]
Run Code Online (Sandbox Code Playgroud)

init脚本:http://fpaste.org/nsfI/

/etc/rc.d/init.d/functions库:http://fpaste.org/ox5Q/

这是我在调试模式下运行时得到的结果:http://fpaste.org/DkoS/

我知道去echo开始后手动PID到一个文件,但为什么不daemon发挥作用的--pidfile工作吗?

daemon $PUPPETMASTER $PUPPETMASTER_OPTS --masterport=${PUPPETMASTER_PORTS[$i]} --pidfile=/var/run/puppet/puppetmaster.${PUPPETMASTER_PORTS[$i]}.pid

当然,Puppet master正在以puppet用户身份运行:

ps -ef | grep [p]uppet
puppet   23418     1  0 18:13 ?        00:00:00 /usr/bin/ruby /usr/sbin/puppetmasterd
Run Code Online (Sandbox Code Playgroud)

/var/run/puppet/文件夹的所有者是puppet:

# ls -ld /var/run/puppet/
drwxr-xr-x 2 puppet puppet 4096 Sep 17 18:46 /var/run/puppet/
Run Code Online (Sandbox Code Playgroud)

vla*_*adr 2

由受控程序(在本例中puppetmasterd)而不是daemon()函数来创建 pidfile;daemon()就靠这个。

确认在何处puppetmasterd创建其 pidfile(可能是/var/run/puppet.pid、等)要找出答案,请检查(如果是脚本)/var/lib/puppet/run/master.pid的内容,或者终止。puppetmasterdpuppetmasterdstrace -f puppetmasterd 2>&1 | grep '\.pid'

pidfile相应地修改您的值/etc/init.d/puppetmaster