在Ubuntu中调试/etc/init.d启动脚本
有定制的dropr消息队列轮询我试图通过/etc/init.d在Ubuntu中启动。 所有3个脚本都非常简单,通过命令行可以完美工作,但出于某种原因,只有其中一个脚本在服务器引导时起作用。 所有有775烫发,并且这工作伟大:
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 /添加去除壳脚本-的ubuntu-810 /
我在所有常见的嫌疑人(/ var / log / messages,/ var / log / daemons等)中寻找输出......仍然没有线索。
非常愿意至少对这种失败原因有所了解。 任何人都知道我可以参考哪些日志文件,看看出了什么问题,为什么?
尝试在模拟启动时环境时调用init-script:
env -i LANG="$LANG" PATH="$PATH" TERM="$TERM" /etc/init.d/your-daemon start
如果您没有看到该命令的输出,请为脚本添加一些调试输出。
我发现在我的/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
在带有-x的子shell中运行它。
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_02_03.html
链接地址: http://www.djcxy.com/p/75487.html上一篇: debugging /etc/init.d startup scripts in Ubuntu
下一篇: Best init script for running an application as a separate user