如何在bash脚本中停止上一个命令?

时间:2016-12-12 00:28:14

标签: node.js bash

我正在尝试构建一个在Web服务器上运行单元测试的bash脚本。

我希望运行一个简单的bash脚本,可以(例如)在makefile中执行以下操作:

  1. 启动网络服务器
  2. 运行单元测试
  3. 停止网络服务器
  4. 假设Web服务器是为NodeJS编写的,这就是它的样子:

    npm start &
    sleep 5
    npm test
    

    此方法的问题是Web服务器将继续运行。如何在npm test阶段后停止它?

3 个答案:

答案 0 :(得分:4)

上次启动的后台进程的PID存储在$!中,因此在启动npm后将其取出并在需要时将其删除:

npm start &
npm_pid=$!
...
kill $npm_pid

答案 1 :(得分:1)

您可以考虑在屏幕上运行该过程。

screen -dmS npm npm start #Starts a detached screen named npm, and runs "npm start" inside

稍后,当你需要杀死进程时,你可以杀死屏幕。当屏幕死亡时,它将使用它进行子进程。

screen -X -S npm quit

答案 2 :(得分:-1)

也许是this solution

的副本
ps -ef | grep your_process_name | grep -v grep | awk '{print $2}' | xargs kill)