我的脚本如下:
#!/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来说很新......
答案 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'
终于有效了!