更新:这只是Pylons应用程序中的导入错误(因为运行启动作业时$ PYTHONPATH不同)导致失败重生循环。非常感谢那些告诉我查看我的日志的人。
大家好,
我在OS X上,尝试设置启动作业以启动并保持我的pylons应用程序。
我像往常一样加载工作:
sudo launchctl unload /Library/LaunchDaemons/dvlf.plist
我看到终端没有错误。服务器永远不会出现。相反,我在控制台上看到了这一点:
4/12/11 6:23:57 PM com.apple.launchd[1] (com.dvlf.pylons) Throttling respawn: Will start in 9 seconds
这是.plist文件。非常感谢任何想法!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>com.dvlf.pylons</string>
<key>EnvironmentVariables</key>
<dict>
<key>PYTHON_EGG_CACHE</key>
<string>/tmp/.python-eggs</string>
</dict>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/paster</string>
<string>serve</string>
<string>--reload</string>
<string>/Volumes/w/artfl/projects/dodgr/servers/pylons/DODGR/production.ini</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>Umask</key>
<integer>7</integer>
<key>UserName</key>
<string>_www</string>
<key>WorkingDirectory</key>
<string>/Volumes/w/artfl/projects/dodgr/servers/pylons/DODGR/</string>
<key>StandardErrorPath</key>
<string>/var/log/dvlf_paster_error.log</string>
<key>StandardOutPath</key>
<string>/var/log/dvlf_output.log</string>
</dict>
</plist>
答案 0 :(得分:2)
当我在SysV init系统( / etc / inittab 条目)上看到“respawning too fast”时,这是因为有问题的程序使用传统的“双叉,然后执行”策略成为一个守护进程。许多此类程序(例如 sshd 和 sylogd )支持命令行开关(例如, sshd 的-D),指示它们避免使用fork()
- 。ING
问题是 init (并且可能是 launchd )正在尝试监视进程,以便在它们退出时处理重新生成它们。当程序试图将自己置于后台(断开与父进程,进程组和所有相关信号处理的连接)时,这将被检测为需要重新生成的近立即退出。 inittab (并且,大概是 launchd )正在施加速率限制,以防止一个失败的程序使系统过度繁忙。
此问题的解决方案是否可以将此 dvlfs.pylons 程序配置为在前台运行,或者“不分离”或“不要守护”...术语效果。
答案 1 :(得分:1)
重新生成的消息通常是因为进程在启动后不久崩溃,可能是因为配置错误。因此,请检查您的日志文件。
来自plist: 你真的有这些目录/档案吗? (检查你的plist中的所有路径 - 最常见的错误)
/Volumes/w/artfl/projects/dodgr/servers/pylons/DODGR/production.ini
/Volumes/w/artfl/projects/dodgr/servers/pylons/DODGR/
如果没有,你应该重新编辑你的plist。