监督员退出ENOEXEC

问题描述 投票:20回答:2

我正在尝试使用supervisord运行java进程并且正在获取:

couldn't exec /var/application/start_tester: ENOEXEC

start_tester的内容是:

java -Duser.dir=/var/application/ -cp /var/application/application.jar:/var/application/toepoke.jar com.application.Application

当我从控制台运行脚本时,应用程序按预期运行。这是我的主管配置

[program:application_tester]
directory=/var/application
command=/var/application/start_tester         ; the program (relative uses PATH, can take args)
log_stdout=true             ; if true, log program stdout (default true)
log_stderr=true             ; if true, log program stderr (def false)
logfile=/var/log/application_tester.log

当我从控制台运行脚本时,这是输出:

[root@monitor application]# ./start_tester 
20131009 203657: application starting up.
20131009 203657 (33): version 2.2.3
supervisord supervisor
2个回答
43
投票

您的文件需要是可执行的。所以要么:

  1. 你应该chmod +x它来设置可执行位。
  2. 在文件的开头放一个shebang。没有这个是导致ENOEXEC的原因。

要么

  1. 将配置文件修改为command=sh /var/application/start_tester

1
投票

在大多数情况下,通常会缺少一个shebang。

  - #!/usr/bin/env bash
  - #!/bin/bash
  - #!/bin/sh
  - #!/bin/sh -

将shebang添加到gunicorn_start文件后(如果是DJANGO),请重新启动主管

sudo systemctl enable supervisor 
sudo systemctl restart supervisor
© www.soinside.com 2019 - 2024. All rights reserved.