我编写了一个 bash 脚本,它启动了许多不同的小部件(各种 Rails 应用程序)并在后台运行它们。我现在正在尝试编写一个恭维停止脚本来杀死由该启动脚本启动的每个进程,但我不确定处理它的最佳方法。
以下是我的启动脚本:
#!/bin/bash
widgets=( widget1 widget2 widget3 ) # Specifies, in order, which widgets to load
port=3000
basePath=$("pwd")
for dir in "${widgets[@]}"
do
cd ${basePath}/widgets/$dir
echo "Starting ${dir} widget."
rails s -p$port &
port=$((port+1))
done
如果可能的话,我试图避免将 PID 保存到 .pid 文件中,因为它们非常不可靠。有没有更好的方法来解决这个问题?