在不使用crontab的情况下作为调度器运行java程序
我有一个主程序,它用Java执行一些任务。我想将其作为批处理作业运行&由于我们的策略,我不允许在可以配置它的地方使用crontab 我的另一个选择是什么?如何安排Java程序每天运行一次 任何示例包装器代码都将非常有用 谢谢 以后可以使用-execute命令在不使用crontab的情况下作为调度器运行java程序,java,scripting,Java,Scripting,我有一个主程序,它用Java执行一些任务。我想将其作为批处理作业运行&由于我们的策略,我不允许在可以配置它的地方使用crontab 我的另一个选择是什么?如何安排Java程序每天运行一次 任何示例包装器代码都将非常有用 谢谢 以后可以使用-execute命令 和/或将其与-delay结合使用一段指定的时间 在循环中,在后台运行 例如,假设您有以下脚本 #!/usr/bin/env bash while true; do java -jar your.jar.file sleep
和/或将其与-delay结合使用一段指定的时间
在循环中,在后台运行 例如,假设您有以下脚本
#!/usr/bin/env bash
while true; do
java -jar your.jar.file
sleep 24h # wait one day
done
以同样的方式运行它
bash script && disown &
您可以使用java定时器任务
您还可以查看。它的调度格式与crontab非常相似。我不确定您是否想用Java或Bash来调度作业。如果尝试用Java实现,可以尝试为作业创建一个线程,并让线程休眠一段时间:
class repeatTask extends Thread
{
int repeatTime;
public repeatTask(int repeatTime)
{
this.repeatTime = repeatTime;
}
public void run()
{
while(true)
{
try {
Thread.sleep(repeatTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
/* Some action codes here*/
}
}
}
您还可以使用类,它还可以让您创建线程:
public void start()
{
timerSchedule();
}
public void timerSchedule()
{
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
/*Action codes here*/
}
}, /*Repeat Time here*/);
}
。。。由于我们的政策,我不允许在可以配置它的地方使用crontab
显然,这一政策肯定有一定的原因,尽管它是什么并不明显。任何替代方案都可能与导致它们禁止cron的相同推理相冲突。(当然,上面提出的一些替代方案可能比cron
更糟糕)
最好的办法是让制定这项政策的人告诉你安排工作的批准方式。或者至少让他们解释为什么禁止使用cron
,这样你就知道在你想出的任何替代方案中应该避免什么了
(好的,这项政策可能是对过去某个问题的愚蠢的下意识反应。但是,你仍然需要了解问题是什么…我非常喜欢这样的东西:看看这对你是否有效。您可以将其用于调度位,只需运行一个标准Java程序