Command line 节点-运行最后一个bash命令

Command line 节点-运行最后一个bash命令,command-line,bash,awk,node.js,Command Line,Bash,Awk,Node.js,正在发生的事情: 用户通过npm[run]start[:mod] 我的prestart脚本运行并在找到本地Web服务器时终止 一旦运行了pkill节点,就会同时终止npm start脚本,因此我想再次运行start命令 我目前的解决办法是 history 1 | awk '/some-regex/ 获取可以运行的最后一个命令的名称 exec('bash -c 'sleep 1 ; pkill node && ${previousCommand}' &') 这是开始

正在发生的事情:

  • 用户通过
    npm[run]start[:mod]
  • 我的
    prestart
    脚本运行并在找到本地Web服务器时终止
  • 一旦运行了
    pkill节点
    ,就会同时终止
    npm start
    脚本,因此我想再次运行start命令
我目前的解决办法是

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`);
}

似乎有一个npm包可以实现这个功能:kill端口

const kill=require('kill-port'))
kill(端口,'tcp')。然后(console.log)。catch(console.log)
资料来源:

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