2011-11-01 223 views
4

有定制的dropr消息队列轮询器我试图通过/etc/init.d在ubuntu中启动。 所有3个脚本都非常简单,通过命令行完美工作,但出于某种原因,只有其中一个脚本在服务器引导时起作用。所有有775个烫发,而这个伟大的工程:在Ubuntu中调试/etc/init.d启动脚本

sudo /etc/init.d/app-poller.sh 

下面是一个示例脚本(必须为www数据用户的身份运行):

[/etc/init.d]$ cat /etc/init.d/app-poller.sh 
#!/bin/sh 
su - www-data -c "bash -c '/path/to/dropr-server/daemons/app-poller.php'" 

我已经运行删除/重新步入inittab文件条目几次通过:

updates-rc.d -f app-poller.sh remove 
updates-rc.d app-poller.sh defaults 

rcconf脚本还说,一切都开始好。这里和这里http://jonathonhill.net/2009-04-23/auto-start-a-shell-script-on-ubuntu-server/: 我已经照着所有的说明这里http://stringofthoughts.wordpress.com/2009/04/16/adding-removing-shell-scripts-ubuntu-810/

而且我在所有通常的嫌疑人寻找输出(在/ var/log/messages中,在/ var /日志/守护进程等)。 ..仍然没有线索。

非常想至少有一些洞察,为什么这是失败。任何人都知道我可以参考哪些日志文件,看看出了什么问题&为什么?

+0

两件事情我已经尝试(没有运气): 1)改变了每个脚本的顺序(尝试'默认[97,98或99]为每个) 2)尝试将脚本shell从“bash -c”/ path/to /。 ..“到绝对路径sh:”/ bin/sh -c'/ path/to/...“ – rICh

回答

0

尝试改变:

su - www-data -c "bash -c '/path/to/dropr-server/daemons/app-poller.php'"

到:

/bin/su - www-data -c "/bin/bash -c '/path/to/dropr-server/daemons/app-poller.php'"

+0

谢谢Mike。还是一样的结果 - 只有我的脚本在97级开始。在98的一个仍然不...从sudo运行它工作得很好,用“sudo nohup /etc/init.d/second-poller.php>/dev/null&” – rICh

+0

除了建议在'grep'中使用'/ var/log'目录搜索'dropr',我不知道还有什么要说的。通过'ls'确认您希望的适当符号链接实际上是在'/etc/rc?.d/中为'S97','S98'和'S99'脚本创建的(对于'K'脚本也是如此) '目录...? – Mike

4

尝试调用init脚本,而模拟引导时的环境:

env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" /etc/init.d/your-daemon start 

做添加一些调试输出到如果您没有看到该命令的任何输出,那么您的脚本。

1

了一下周围搜索后,我发现加入靠近我/etc/init.d/scriptname顶部以下是我所需要的:

debug_me=true 

if [[ debug_me == true ]]; then 

    # Close STDOUT 
    exec 1<&- 
    # Close STDERR 
    exec 2<&- 

    LOG_FILE=/home/myhome/scriptname.log 

    # Open STDOUT as $LOG_FILE file for read and write. 
    exec 1<>$LOG_FILE 

    # Redirect STDERR to STDOUT 
    exec 2>&1 

    # Display shell commands with expanded args 
    set -x 

fi