如何从shell脚本开始查找和停止/终止进程?

时间:2016-08-01 22:58:54

标签: linux bash shell master-slave kill-process

我计划启动一系列进程并在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上运行。

1 个答案:

答案 0 :(得分:0)

列出所有与<{strong> localhost:5050的连接:

lsof -Pi | grep '>localhost:5050'

终止连接到 localhost:5050的所有流程:

kill `lsof -Pi | grep '>localhost:5050' | awk '{print$2}'`