我正在尝试在主管(http://supervisord.org/)的监督下运行一个流程。
我有两个环境运行几乎相同的环境(Ubuntu 12.04 LTS)。
目前的问题是我试图在Supervisor下运行的过程可以在一台服务器下完美运行,但不能在另一台服务器上运行。
在发生故障的服务器上,我尝试在没有Supervisor的情况下运行相同的进程。一切都好。任何的想法?感谢。
以下是主管提供的stderr:
Traceback (most recent call last):
File "/usr/storm-0.8.1/bin/storm", line 402, in <module>
main()
File "/usr/storm-0.8.1/bin/storm", line 399, in main
(COMMANDS.get(COMMAND, "help"))(*ARGS)
File "/usr/storm-0.8.1/bin/storm", line 263, in supervisor
jvmopts = parse_args(confvalue("supervisor.childopts", cppaths)) + [
File "/usr/storm-0.8.1/bin/storm", line 58, in confvalue
p = sub.Popen(command, stdout=sub.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
我仔细检查了subprocess.py及其权限,它看起来与成功的服务器相同。
我希望我能提供更多信息,但这就是我的全部。也许有人可以建议我从哪里开始?
答案 0 :(得分:3)
我在尝试启动Storm时遇到了这个问题,因为java不在我的PATH上。我不得不
export JAVA_HOME=... # specify your own path here
export PATH=$PATH:$JAVA_HOME/bin # allows for finding the java executable
所以我猜测它是java而不是python(或python模块)是你的问题。
为了弄清楚这一点,我实际上进入并向storm.py脚本添加了一些调试打印语句,以便我可以看到它尝试作为子进程执行的命令。当我尝试通过shell脚本运行相同的命令(由于java类路径被指定为参数而非常大)时,它无法找到Java。
'希望这会有所帮助。
答案 1 :(得分:1)
如果您已经设置了java路径并仍然出现此错误,则可以尝试此操作。
在storm conf文件夹中打开storm_env.ini文件。 查找配置备用JAVAHOME的行 如果您是第一次访问它,它将看起来像这样
#要使用的java实现。如果找不到JAVA_HOME,我们希望java在路径#JAVA_HOME:home使用您的JAVAHOME
更新它ex(这在我的文件中看起来如何。):
#要使用的java实现。如果找不到JAVA_HOME,我们希望java在路径中JAVA_HOME:/ usr / lib中/ JVM / JAVA -8-预言
保存更改并关闭编辑器。
打开新终端并重试