Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash脚本中通过ssh运行许多java应用程序_Java_Bash_Ssh - Fatal编程技术网

在bash脚本中通过ssh运行许多java应用程序

在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 但是,当我运行脚本时,我

我正在尝试用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

但是,当我运行脚本时,我必须等待片刻,然后对每台机器按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&”