我正在尝试构建一个在Web服务器上运行单元测试的bash脚本。
我希望运行一个简单的bash脚本,可以(例如)在makefile中执行以下操作:
假设Web服务器是为NodeJS编写的,这就是它的样子:
npm start &
sleep 5
npm test
此方法的问题是Web服务器将继续运行。如何在npm test
阶段后停止它?
答案 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)
ps -ef | grep your_process_name | grep -v grep | awk '{print $2}' | xargs kill)