2

我正在尝试在主管( 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 及其权限,它看起来与成功的服务器相同。

我希望我能提供更多信息,但这就是我所拥有的。也许有人可以建议我从哪里开始?

4

2 回答 2

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。

'希望这可以帮助。

于 2013-08-05T18:40:35.513 回答
1

如果您已经设置了 java 路径,但仍然出现此错误,您可以试试这个。

  1. 在storm conf 文件夹中打开storm_env.ini 文件。如果您是第一次访问,请查找配置备用 JAVAHOME 的行,它看起来像这样

    #要使用的java实现。如果找不到 JAVA_HOME,我们希望 java 在路径 #JAVA_HOME:home
  2. 用你的 JAVAHOME 更新它

    ex(这是它在我的文件中的外观。):

    #要使用的java实现。如果找不到 JAVA_HOME,我们希望 java 在路径中

    JAVA_HOME:/usr/lib/jvm/java-8-oracle

  3. 保存更改并关闭编辑器。

  4. 打开新终端,然后重试

于 2015-02-23T10:13:12.517 回答