通过bash运行多个Java应用实例,如何访问它们的shell菜单?
所以我得到了测试新java引擎的工作。 创建它的程序员为我创建了一个测试jar文件,这样我就可以测试一些崩溃事件和负载平衡 我知道这是一堆文字,但我希望有人能给我一个很好的答案!提前感谢您的阅读 我想自动化测试过程,所以我创建了一个bash文件 到目前为止,它做了几次循环,在循环中启动jar文件:通过bash运行多个Java应用实例,如何访问它们的shell菜单?,java,linux,bash,command-line,jar,Java,Linux,Bash,Command Line,Jar,所以我得到了测试新java引擎的工作。 创建它的程序员为我创建了一个测试jar文件,这样我就可以测试一些崩溃事件和负载平衡 我知道这是一堆文字,但我希望有人能给我一个很好的答案!提前感谢您的阅读 我想自动化测试过程,所以我创建了一个bash文件 到目前为止,它做了几次循环,在循环中启动jar文件: java -jar /mnt/nas/i/testsail/clusteng.jar 2>> /dev/null & 之后,它将获取刚刚启动的java应用程序的processId
java -jar /mnt/nas/i/testsail/clusteng.jar 2>> /dev/null &
之后,它将获取刚刚启动的java应用程序的processId:
process_ids[$i]=$!
所以最终我有了5个jar实例,都有它们相关的processId
现在我的问题是,程序员在应用程序周围添加了一个小外壳,我可以告诉它在什么时候崩溃。如果我只是从命令行启动引擎,它会告诉我shell和我可以直接输入'fail moment\u Of_Faillure',它会在那里意外地失败
当然,现在我想给每个实例一个失败时刻,我想从bash脚本中随机分配它
我的问题是,如何从bash脚本中向每个实例发出命令?
我将在此处发布完整的bash脚本:
#!/bin/bash
# Engine testing script; Starts multiple engine instances and shoots one every 20 seconds
clear
echo "#####################"
echo "# Start $1 processes #"
echo "#####################"
echo ""
# create number of processes
for (( i = 1 ; i <= $1; i++ ))
do
if test $i == 1
then
echo "Starting process: $i -> Master Process"
else
echo "Starting process: $i"
fi
#$! = last started process
java -jar /mnt/nas/i/testsail/clusteng.jar 2>> /dev/null &
process_ids[$i]=$!
echo "PID $!"
echo ""
sleep 20
done
sleep 20
for (( i = 1 ; i <= $1; i++ ))
do
echo "Kill PID:${process_ids[$i]}"
#ech `FAIL BEFORE_RANK_DISTRIBUTION` > fifo$i
kill -9 ${process_ids[$i]}
echo ""
if test $i != $1
then
sleep 20
fi
done
# run errorcheck
. `./checklogs`
#/bin/bash
#发动机测试脚本;启动多个引擎实例,并每20秒触发一个
清楚的
回声
echo“#启动$1进程#”
回声
回声“”
#创建进程数
对于((i=1;i>/dev/null)&
进程标识[$i]=$!
echo“PID$!”
回声“”
睡20
完成
睡20
对于((i=1;i fifo$i)
kill-9${process_id[$i]}
回声“”
如果测试$i!=$1
然后
睡20
fi
完成
#运行错误检查
.`./检查日志`
您对shell脚本和实际shell脚本的描述似乎有点不同。您谈到影响实例的命令,但您发布的脚本每20秒就杀死一个实例。听起来您对shell脚本和实际shell脚本的描述似乎有点不同。您谈到ut命令会影响实例,但您发布的脚本每20秒就会杀死一个实例