每隔1分钟在for循环中调用一个命令

时间:2015-05-09 02:02:40

标签: java linux shell unix sleep

我正在运行我的runnable jar文件:

/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar data_test.jar config.properties > test_jar_100.txt

现在我想在for循环中运行上面的命令100次,但它应该在再次调用之前休眠1分钟,并且每次运行时文件名应该增加1。

所以流程应该是这样的:

/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar data_test.jar config.properties > test_jar_100.txt
sleep for 1 minute
/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar data_test.jar config.properties > test_jar_101.txt
sleep for 1 minute
/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar data_test.jar config.properties > test_jar_102.txt
.. keep doing this 100 time

所以我得到了以下for循环,但不确定如何在再次调用之前我睡1分钟并在每次运行时将文件数增加1?

for ((i=1;i<=100;i++)); do /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar data_test.jar config.properties > test_jar_100.txt; done

3 个答案:

答案 0 :(得分:3)

您可以使用sleep命令暂停循环执行一分钟,对于文件名,在名称中添加“$ i”变量就足够了:

for ((i=1;i<=100;i++)); do 
    /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar data_test.jar config.properties > "test_jar_${i}.txt"
    # Sleep for a minute 
    sleep 60  
done

答案 1 :(得分:3)

假设有一个带有bash的常见Linux环境,你可以执行:

for i in $(seq 100 199) ; do echo "iteration $i" ; /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar data_test.jar config.properties > test_jar_$i.txt ; sleep 60 ; done

答案 2 :(得分:3)

如果您从100开始编号,为什么要从1开始计算循环?

for ((i=100; i<200; i++)); do yourlongcommand > test_jar_$i.txt; sleep 1m; done