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

标签 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

但是,当我运行脚本时,我必须等待片刻,然后在每台机器上按 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 重定向添加到同一个日志文件,这可能会在出现问题时提供帮助

关于java - 在 bash 脚本中通过 ssh 运行许多 java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57421936/

相关文章:

java - 大型 java 项目所有模块的数据库连接设置

java - 用 xpath 替换对象列表中的值?

bash - 如何从命令行进行递归查找和替换?

ssh - 限制SSH公钥以仅在特定端口上打开反向隧道(通过ssh -R)

Java processbuilder 子进程在退出后继续

java - 根 ("/"上的 spring mvc 网站)

bash - 用 exit 结束 bash 脚本有什么好处

linux - Bash:如何将 'find' 选项保存到变量中

python - 使用 SFTP 缓慢上传许多小文件

ssh - 如何在远程服务器上运行CPU Hogging程序?