首页 > 解决方案 > 节点 - 运行最后一个 bash 命令

问题描述

怎么了:

我目前的解决方案是

history 1 | awk '/some-regex/

获取我可以运行的最后一个命令的名称

exec('bash -c 'sleep 1 ; pkill node && ${previousCommand}' &')

这开始变得非常老套,所以我认为必须有更好的方法来做到这一点。

到目前为止我的节点脚本:

const execSync = require("child_process").execSync;
const exec = require("child_process").exec;

const netcat = execSync('netcat -z 127.0.0.1 3000; echo $?') == 1 ? true : false; // true when :3000 is available @jkr

if(netcat == false) {
    exec(`bash -c 'sleep 1 ; pkill node' &`);
    console.warn('\x1b[32m%s\x1b[0m', `\nKilling all local webservers, please run 'npm start' again.\n`);
}

标签: command-linebashawknode.js

解决方案



似乎有一个 npm 包可以做到这一点:kill-port

const kill = require('kill-port')

kill(port, 'tcp').then(console.log).catch(console.log)

来源:https ://www.npmjs.com/package/kill-port

我知道这可能无法回答运行最后一个命令的问题,但应该可以解决 OP 的问题。


推荐阅读