如何将 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文件,使用绝对路径,问题将得到解决
一、类似问题,暂无答案:
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文件,使用绝对路径,问题将得到解决