Bash 木偶初始化脚本不';不创建pid文件吗? CentOS 5.4版(最终版) puppet-server-2.7.19-1.el5从puppetlabs repo安装

Bash 木偶初始化脚本不';不创建pid文件吗? CentOS 5.4版(最终版) puppet-server-2.7.19-1.el5从puppetlabs repo安装,bash,puppet,init.d,sysv,Bash,Puppet,Init.d,Sysv,puppetmaster已成功启动,但它不会创建pid文件。这是停止时出现[失败]消息的原因: /etc/init.d/puppetmaster stop Stopping puppetmaster: [FAILED] 初始化脚本: /etc/rc.d/init.d/functions库: 这是我在调试模式下运行时得到的结果: 我知道启动后手动将pid回送到文件的方法,但是为什么守护进程的--pidfile功能不起作用呢

puppetmaster
已成功启动,但它不会创建pid文件。这是停止时出现
[失败]
消息的原因:

/etc/init.d/puppetmaster stop
Stopping puppetmaster:                                     [FAILED]
初始化脚本:

/etc/rc.d/init.d/functions
库:

这是我在调试模式下运行时得到的结果:

我知道启动后手动将pid回送到文件的方法,但是为什么
守护进程的
--pidfile
功能不起作用呢

daemon$PUPPETMASTER$PUPPETMASTER_OPTS--masterport=${PUPPETMASTER_端口[$i]}--pidfile=/var/run/PUPPETMASTER/PUPPETMASTER.${PUPPETMASTER_端口[$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
/var/run/puppet/
文件夹的所有者是
puppet

# ls -ld /var/run/puppet/
drwxr-xr-x 2 puppet puppet 4096 Sep 17 18:46 /var/run/puppet/

创建PID文件的是受控程序(在本例中为
puppetmaster
),而不是
daemon()
函数<代码>守护进程()
依赖于此

确认
puppetmasterd
创建其pid文件的位置(可以是
/var/run/puppet.pid
/var/lib/puppet/run/master.pid
等)查找、检查
puppetmasterd
的内容(如果是脚本),或者杀死
puppetmasterd
然后
strace-f puppetmasterd 2>&1 | grep'\.pid'


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

因此,在我看来,这里可能有两种可能性:

  • 如果您试图使用daemon命令的--pidfile选项,我相信您有语法问题

    • Red Hat的daemon命令具有以下(无帮助)签名:
      用法:daemon[+/-nicelevel]{program}
      不完全清楚的是,在程序位置之后包含的任何内容都被视为传递给程序的选项,而不是传递给守护进程函数调用的选项。
    • 因此,在本例中,您将
      --pidfile
      参数传递给
      $PUPPETMASTER
      本身,而不是
      daemon()
      。您可以通过使用以下命令来解决此问题:
      守护进程--pidfile=/var/run/puppetmaster/puppetmaster.${puppetmaster_端口[$i]}.pid$puppetmaster$puppetmaster_选项--masterport=${puppetmaster_端口[$i]}
  • 这里的第二个选项是,
    $PUPPETMASTER
    (或者更确切地说,它背后的程序)可能会将自身后台化,如果是这样,则可能负责创建自己的.pid文件。流程管理工具就是这样工作的。它可能是配置文件中的一个选项,也可能是由
    $PUPPETMASTER
    表示的程序的一个选项

    • 我不是一个傀儡用户,所以我无法在这里帮助您了解细节。但我会深入调查,以了解更多有关此选项的信息
    • 重要的是要注意,如果$PUPPETMASTER正在后台监控自身,那么传递给
      daemon()
      --pidfile
      参数将无效

  • 猎得好

    包括您正在使用的操作系统的名称/版本/发行版。还发布运行“whichdaemon”的输出。daemon命令可能有问题,但我在跟踪相同的文档/错误列表时遇到问题。在基于Red Hat的上,
    daemon
    是一个“标准”函数,在
    /etc/rc.d/init.d/functions
    脚本中定义。更新了我的问题。fpaste.org的链接已断开…:(