我正在调用Chef中的服务来启动weblogic nodemanager。我们有一个init.d脚本(service nodemanager start
),它对nodemanager进行以下调用:
su weblogic -c /opt/ora/mw/wlserver_10.3/server/bin/startNodeManager.sh &
我们正在运行一个简单的测试配方如下:
service "nodemanager" do
action :start
end
我们可以看到确实正在调用/启动节点管理器脚本,但是一旦chef-client运行完成,它就会终止节点管理器脚本。我们似乎尝试了守护程序和 nohup 的所有组合,但无济于事。当厨师 - 客户退出时脚本被杀的任何想法?
答案 0 :(得分:4)
使用“&”意味着它将当前命令作为子进程在后台运行但仍附加到当前进程。这意味着一旦父进程由chef-client出口启动,所有子进程都将获得SIGNUP。因此节点管理器脚本不会被杀死。您可以使用ps aux
检查列 PID 和 PPID 来验证这一点。
理想的解决方法是使用daemon
在init.d脚本中没有tty的专用用户/组下运行节点管理器。
快速解决方法是使用nohup
:
su nohup weblogic -c /opt/ora/mw/wlserver_10.3/server/bin/startNodeManager.sh &>/dev/null &