Итак, я получил работу по тестированию нового Java-движка.Программист, создавший его, сделал мне тестовый jar-файл, чтобы я мог протестировать некоторые аварийные моменты и балансировку нагрузки.
Я знаю, что здесь много текста, но я надеюсь, что кто-то может дать мне отличный ответ!Заранее спасибо за чтение!
Я хотел автоматизировать процесс тестирования, поэтому я создал файл bash.
Пока что он выполняет цикл несколько раз, в которомон запускает файл jar:
java -jar /mnt/nas/i/testsail/clusteng.jar 2>> /dev/null &
После этого он получает processId только что запущенного Java-приложения:
process_ids[$i]=$!
Так что в итоге у меня есть 5 экземпляров этого jar, все сих связанный идентификатор процесса.
Теперь моя проблема в том, что программист добавил небольшую оболочку вокруг приложения, в которой я могу сказать, в какой момент произойти сбой.Если я просто запускаю движок из командной строки, он показывает мне эту оболочку, и я могу просто напечатать 'fail moment_Of_Faillure', и он будет терпеть неудачу.
Конечно, теперь я хочу дать каждому экземпляру еще один момент отказа, и яхочу сделать это из сценария 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`