在bash脚本中通过ssh运行许多java应用程序
我正在尝试用Java应用程序优化一些实验。许多机器上都有相同的应用程序。我想通过一个带有ssh的bash脚本来运行所有这些脚本 我有一个bash脚本,它有一个在bash脚本中通过ssh运行许多java应用程序,java,bash,ssh,Java,Bash,Ssh,我正在尝试用Java应用程序优化一些实验。许多机器上都有相同的应用程序。我想通过一个带有ssh的bash脚本来运行所有这些脚本 我有一个bash脚本,它有一个while循环来运行应用程序。像这样 while [ $COUNTER -lt $WORKERS ] do ssh ubuntu@host "java java-app.jar" > /data/some-logs.log ((COUNTER++)) ((IP_BEGINS++)) done 但是,当我运行脚本时,我
while
循环来运行应用程序。像这样
while [ $COUNTER -lt $WORKERS ]
do
ssh ubuntu@host "java java-app.jar" > /data/some-logs.log
((COUNTER++))
((IP_BEGINS++))
done
但是,当我运行脚本时,我必须等待片刻,然后对每台机器按Ctrl+C。如何在后台运行每个应用程序?以
nohup
作为前缀,并在命令后面附加一个&
,以便在后台运行它
while [ $COUNTER -lt $WORKERS ]
do
ssh ubuntu@host "nohup java -jar java-app.jar > /data/some-logs.log 2>&1 &"
((COUNTER++))
((IP_BEGINS++))
done
您可能需要修改&
的引号和位置,以确保远程ssh命令得到支持,而不是本地ssh命令
编辑-我根据你的评论修正了答案。还将stderr重定向添加到同一个日志文件,这可能会在出现问题时有所帮助我非常喜欢Fabric for remote execution:see Thank you,我只需要使用bash。阅读此文章谢谢!成功了。然而,我不得不改变前缀&正如你提到的那样。sshubuntu@host“nohup java-app.jar>/data/some-logs.log&”