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]
- 我的
脚本运行并在找到本地Web服务器时终止prestart
- 一旦运行了
,就会同时终止pkill节点
脚本,因此我想再次运行start命令npm 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的问题