如果我从命令行执行它,我有一个可以正常工作的命令......但是当我将它放在 init.d 脚本中时它不会启动(嗯..它启动但行为与运行时不同直接地)。
知道为什么这不适用于 init 脚本吗?
命令是:bluepill load /var/www/html/bluepill.conf
init.d 脚本是:
#!/bin/sh
## Based on http://www.novell.com/coolsolutions/feature/15380.html
# chkconfig: 345 99 1
# processname: solr
# Provides: bluepill
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: bluepill daemon, providing process monitoring
# Description: Bluepill
# Check for missing binaries
BLUEPILL_BIN=/usr/local/bin/bluepill
test -x $BLUEPILL_BIN || { echo "$BLUEPILL_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
# Check for existence of needed config file and read it
BLUEPILL_CONFIG=/var/www/html/bluepill.conf
test -r $BLUEPILL_CONFIG || { echo "$BLUEPILL_CONFIG not existing";
if [ "$1" = "stop" ]; then exit 0;
else exit 6; fi; }
case "$1" in
start)
echo -n "Starting bluepill "
$BLUEPILL_BIN load $BLUEPILL_CONFIG
;;
stop)
echo -n "Shutting down bluepill "
$BLUEPILL_BIN quit
;;
restart)
## Stop the service and regardless of whether it was
## running or not, start it again.
$0 stop
$0 start
;;
*)
## If no parameters are given, print which are avaiable.
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
更新(回答几个问题):
我还添加了脚本,以便在启动时使用:
chkconfig --add bluepill_script
chkconfig --level 345 bluepill_script on
尝试添加
到初始化脚本的顶部。
我会在运行时响应卡米尔对输出的要求。
此外,您是否尝试过
chkconfig --add bluepill
和chkconfig bluepill on
.否则,我打赌它是脚本中的某种环境变量。
. /etc/profile
尝试在开始时通过或类似方式采购环境。特别是因为它看起来像是安装在 /usr/local/bin 中。它可能需要正确设置 PATH 或 LD_LIBRARY_PATH。我正在使用以下 init.d 脚本,并且遇到了类似的问题,因为 bluepill gem 是在 rvm 安装下安装的。注意必须获取 rvm 环境变量,但同样可以通过获取 /etc/profile 来实现(因为它也被设置在那里)。我正在使用 Opscode 食谱食谱来设置这些,因此这些路径设置为变量,因为 rvm 食谱正在安装其 gem。
好的..愚蠢的问题,但是您是否将脚本设置为在启动时启动?我更熟悉 debian 风格的发行版,但 ntsysv 或 chkconfig 可能是你需要的。
另一个愚蠢的问题,脚本运行后是否将 bluepill 加载到内存中?
ps -ef | grep bluepill
日志中没有错误并不能明确表明 init 脚本正在运行。两个简单的步骤将调试它。
您可能还必须在 /etc/rcX-folders 之一中放置一个链接(取决于您的预期运行级别)并运行