Я должен запустить файл JAR с различными параметрами, как это:
#!/bin/bash
cd /Users/hawkarhama/Desktop/RUN
echo $(java -jar IPM.jar 0 20 3 sign.txt)
echo $(java -jar IPM.jar 1 20 3 sign.txt)
echo $(java -jar IPM.jar 2 20 3 sign.txt)
Если, скажем, второй занял больше пяти минут, я хочу остановить его и перейти к следующему. Таким образом, максимальное время для каждой пробирки составляет 5 минут. Если это займет меньше, это нормально; но если он выполняется дольше, сценарий должен перейти к следующему.
echo $(…)
вместо того, чтобы просто запустить программуjava -jar IPM.jar … sign.txt
?echo$
вы правы, и я делал это раньше, это была просто копия кода, который я поместил здесь. Что касается кода Java, я не знаю, как это сделать программно. Я пытался,System.CurrentTimeMilles
но это не работает.Ответы:
Это должно работать в Bash 4 или более поздней версии:
Для предыдущих версий:
После поиска немного чистой версии Java, я нашел это :
источник
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
, Это дает мне эту строку после того, как каждый процесс занимает более 5 минут. и он все еще запускается, что не то, что я хочу.kill: (1234) - No such process
сообщение для каждого вызова, который завершался до истечения времени.) Вы уверены, что набираете его правильно? (Попробуйте скопировать и вставить.) Какую операционную систему вы используете?2>&1 >/dev/null
после команды kill, но он не пропустил вывод, так что для ясности я пропустил это в решении. Я тестировал его на Cygwin, а не на действительно UNIX-оболочке, но аргументы для таких команд,kill
как большинство, должны быть такими же, как и у большинства Linux-Если ваша система имеет
timeout
команду, вы можете использовать ее, какисточник
man timeout
илиinfo coreutils 'timeout invocation'
иметь полную помощь. Это часть GNU coreutils .timeout: command not found
. Я думаю, что эта версия не может найти тайм-аут или у меня его нет на моем Mac