如何将 Ubuntu 中的 运行 可执行文件作为命令或服务(使用 Node.js child_process.spawn())?

How to run executable file in Ubuntu as a command or service (with Node.js child_process.spawn())?

一、类似问题,暂无答案:

Node.js child_process.spawn() fail to run executable file

node.js child_process.spawn ENOENT error - only under supervisord

我有一个扩展名为 .linux 的可执行文件。这是http服务器。

service.linux

我可以运行这样:

$ ./service.linux
2018/01/11 18:32:56 listening on port 8080

但由于它不是命令,我无法将其作为派生进程启动:

let cp = spawn('service.linux', [], { cwd: __dirname });

我得到的错误是:

service.linux: command not found

ERROR: Error: spawn service.linux ENOENT

我怎样才能 运行 它作为一个命令?或者我应该使用其他命令来 运行 它,例如:

$ start service.linux

更新:

$ file service.linux 
service.linux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

更新:

需要绝对路径:

const path = require('path');
let cp = spawn(path.resolve(__dirname, `service.linux`), [], { cwd: __dirname });

尝试使用 exec 并在二进制名称前写 ./:

const { exec } = require("child_process");

exec("./service.linux", (err, data) => {
    if (err) return console.log(err);
    console.log(data);
});

假设文件与脚本位于同一目录中。

错误ENOENT的意思是"Error No Entry"所以基本上找不到命令。

这就是我们指定 "./" 的原因。这样它将把它作为一条路径来处理。

这是一个路径问题,节点无法找到service.linux文件,使用绝对路径,问题将得到解决