2015-05-09 195 views
2

我正在我運行的JAR文件中像這樣的命令:調用for循環每隔1分鐘

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

現在,我想在運行上面的命令循環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 
+1

你能叫'睡眠60'嗎? –

+0

@EricRenouf'60'?或者你的意思是'60 * 1000'?我自己,我會考慮使用ScheduledExecutorService。 –

+1

@HovercraftFullOfEels如果它是在一個bash提示符下,那麼在幾秒鐘內,所以'60' –

回答

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 
3

假設一個常見的Linux環境下使用bash,你可以執行:

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 
3

你爲什麼從1計算你的循環,如果你是從100編號的文件嗎?

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