【问题标题】:How to run multiple commands repeatedly on centos?如何在centos上重复运行多个命令?
【发布时间】:2016-03-05 15:00:45
【问题描述】:

我有很多任务,比如java -jar task1.jarjava -jar task2.jar 等等。所有任务都需要不同的时间来完成。我想同时运行它们并在完成后再次运行。有没有解决问题的好办法?

【问题讨论】:

  • 是否要等待两个命令完成后再重新启动它们?
  • 不,我希望每个任务在完成后 10 分钟内再次运行。
  • 这个问题更适合superuser.com

标签: java linux bash shell


【解决方案1】:

您想在后台运行这两个命令并在它们完成并暂停 10 分钟后立即重新启动它们(您的 cmets 在下面)。

这样的事情会独立重启每个命令:

$ while true ; do java -jar task1.jar ; sleep 600 ; done &
$ while true ; do java -jar task2.jar ; sleep 600 ; done &

如果您想等待两个命令完成后再重新启动它们:

$ while true ; do
    java -jar task1.jar &
    java -jar task2.jar &
    wait
    sleep 600
  done

根据您的评论,我确实在重新运行命令之前添加了 10 分钟的暂停...

【讨论】:

  • 第一种情况,如何添加睡眠?
【解决方案2】:

是的,您可以在后台模式下运行所有​​这些指令

语法

long_command with arguments > redirection &

在你的情况下,它会是

java -jar task1.jar &
java -jar task2.jar &

两者都将在后台模式下运行,并且它们将并行运行。

运行程序'n'次

#!/bin/sh

a=0
n=10

while [ $a -lt $n ]
do
    java -jar task1.jar &
    java -jar task2.jar &
    a=`expr $a + 1`
done

带条件中断的无限运行

#!/bin/sh

a=0

while true
do
   echo "Running "$a "th time"
   if [ $a -eq 5 ]
   then
      break
   else
      java -jar task1.jar &
      java -jar task2.jar &
   fi
   a=`expr $a + 1`
done

您可以将您想要的条件放在if 块中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    相关资源
    最近更新 更多