使用BASH在不同的盒子上启动多个进程

时间:2014-10-21 19:53:35

标签: linux bash ssh process

我的脚本如下:

#!/bin/bash

myProgram1&
pidMyProgram1=$!

ssh myUserName@pluto
myProgram2&
pidMyProgram2=$!

function cleanup
{
   kill -9 $pidMyProgram1 $pidMyProgram2
   exit 0
}

trap cleanup SIGINT SIGTERM

while :
do
   sleep 1
done

它无法正常工作。我正在尝试启动两个进程,一个在另一个名为pluto的盒子上。我希望这两个进程无限期地运行,直到我按下control + c,然后我希望两个进程都停止。当我运行这个时,我最终ssh成了冥王星,但我的进程甚至没有运行。关于如何处理我在单独盒子上启动过程的要求的任何想法?我对BASH来说很新......

2 个答案:

答案 0 :(得分:1)

ssh myUserName@pluto在远程计算机上启动一个shell,不会退出,直到该shell退出。它不会导致脚本的其余部分在远程计算机上执行。您只需将myProgram2作为参数传递给ssh;该程序必须存在于远程机器上,而不仅仅存在于本地盒子上。

myProgram1 & pidMyProgram1=$!

ssh myUserName@pluto myProgram2 & pidMyProgram2=$!

function cleanup
{
   kill $pidMyProgram1 $pidMyProgram2
   exit 0
}

trap cleanup SIGINT SIGTERM

while :
do
   sleep 1
done

假设myProgram1将一直运行直到中断,您可以用

替换繁忙的while循环
wait $pidMyProgram1

答案 1 :(得分:0)

我需要的是ssh -l username hostname' pkill processName'

终于有效了!