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