【发布时间】:2019-05-11 19:03:32
【问题描述】:
刚刚制作了我的第一个 bash 脚本。它为特定目录中的每个文件夹并行生成一个http-server 进程。
这是我所拥有的:
PORT=8001
cd websitesfolder
for d in */ ; do
http-server $d -p $PORT &
let "PORT++"
done
这确实产生了http-servers,但是当我使用 Ctrl C 退出时,进程并没有被杀死。
我首先在没有循环的情况下实现了这个,然后添加&& fg 我能够使用 Ctrl+C 杀死进程
http-server dir1 -p 8001 & http-server dir2 -p 8002 && fg
我的循环解决方案是否可能出现类似情况?
编辑:系统是 macOS
【问题讨论】:
-
最佳实践是根本不这样做,而是——例如——每个实例都有一个单独的 systemd 服务。
-
(...因为已经明确说明您使用的是 MacOS,所以它会被启动,而不是 systemd)。
-
xargs 也可能是一个很好的解决方案 :) stackoverflow.com/questions/28357997/…
标签: bash loops kill foreground