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

calling a command in for loop every 1 minute

我正在 运行 我的 运行nable 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

您可以使用 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

假设使用 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

如果您的文件从 100 开始编号,为什么要从 1 开始循环?

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