我的脚本如下:
#!/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 进入 pluto,但我的进程甚至没有运行。关于如何处理在单独的盒子上启动流程的要求,有什么想法吗?我对 BASH 很陌生......
最佳答案
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
关于linux - 使用 BASH 在不同的盒子上启动多个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26495139/