我计划启动一系列进程并在shell脚本中对它们进行后台处理,我正在寻找好的方法来稍后在清理函数或脚本中识别这些进程。假设我的启动功能如下所示:
function start_slaves() {
for i in $(find $HOME -type d -name "slv-*")
do
BN=$(basename "$i")
cd "$i" && pestpp tussock_full.pst /H localhost:5050 > "$HOME/$BN.log" 2>&1 &
echo "Started slave in: '$i'"
done
}
每个进程与独立启动的主进程通信(在本例中为localhost:5050
)。如果我手动启动每个从属进程(从我的shell,而不是从脚本),并且我没有将进程发送到尾随&
的后台,我可以使用 Ctrl - C 。我需要一个可编写脚本的解决方案,因为将N
单独的shell /终端窗口打开以管理N
从属进程很快变得不切实际。所以我想要一种方法来批量启动和终止进程。 FWIW,我正在使用Fedora上的bash开发它,但如果我能找到一个不太平台特定的解决方案,那将是非常好的,因为我最终需要能够在Ubuntu,OSX和CentOS上运行。
答案 0 :(得分:0)
列出所有与<{strong> localhost:5050
的连接:
lsof -Pi | grep '>localhost:5050'
终止连接到 localhost:5050
的所有流程:
kill `lsof -Pi | grep '>localhost:5050' | awk '{print$2}'`