如何在一个脚本中启动serval应用程序并将输出传递给当前终端?
对于开发,我需要一个脚本,它启动三个Web服务器(当然是在三个端口上)并将这些服务器的输出传送到当前终端。
困难的是在shell的末尾阻止这些Web服务器。我必须发送信号或更好地发送[Ctrl + C]给所有网络服务器。
我希望你能理解我; - )
答案 0 :(得分:2)
修改强>
#!/bin/bash
netstat &
p1=$!
netstat &
p2=$!
netstat &
p3=$!
trap "kill $p1 $p2 $p3" SIGINT
wait $p1 $p2 $p3
脚本在后台启动其他进程并记住其进程ID。然后它等待所有这些终止。同时,在收到SIGINT(即^C
)后,它将终止这些进程,然后终止脚本(因为缺少更多的东西)。因此,通过^C
您的脚本,您可以终止所有后台服务器进程。
哦,是的...我正在使用netstat作为长时间运行的测试命令。替换你想要的任何东西。
最后,您可以选择使用kill
向您的流程发送哪个信号。检查man kill
选项;我认为INT(相当于^C
)是默认值。
答案 1 :(得分:1)
web_server_1 &
ws1=$!
web_server_2 &
ws2=$!
web_server_3 &
ws3=$!
# Kill some time
kill -s SIGINT $ws1 $ws2 $ws3