如何从 crontab -e 触发 java 函数或 class
How to trigger a java function or a class from crontab -e
我正在尝试 运行 每 5 分钟执行一次 cronjob,实际任务是触发 curl 终点
来自 java class 中的一个方法。
我的 crontab -e 如下所示:
*/5 * * * * bash /home/ec2-user/script.sh
上面的行工作正常,但它没有从 Cron 作业 class 触发 FTPConnect.start()
我的 Cron 作业如下所示:
@零件
public class CJob{
@Scheduled(cron="*/5 * * * * curl -v http://localhost:8080/apiname/v1/cids/$filename" ) // Every 12 hours
public static void fetchFromSFTP() {
try {
FTPConnect.start();
return;
} catch (Exception e) {
System.out.println("There was an error running this cron.");
e.printStackTrace();
System.exit(1);
}
}
}
哇,你问问题的方式和你提供的信息非常混乱 - 不管怎样,我正在努力回答。
首先 - 据我了解 - 你有一个真正的 cronjob
在 unix 机器上激活,它定期(每 5 分钟)执行任务/脚本。
从您的 cron(或从您的脚本中 - 这无关紧要)您可以使用 java -jar ${yourJarName}
命令调用 java 应用程序。
为此,您当然需要正确安装和设置 Java
(安装 JRE 并可能设置一些环境变量,例如 JAVA_HOME
).
这样的话Java就能启动成功了。要使其启动并 运行 您的应用程序/ JAR
成功,您的程序需要包含一个有效的 main 方法 。它的签名是 public static void main(args[])
。 没有这种方法Java将无法运行任何应用程序。
在主要方法中,您可以做任何您喜欢的事情 - 例如调用您的 fetchFromSFTP
方法来执行任务。
在上述场景中,调度将由 unix 系统 cron 调度程序。
控制
由于您使用了 @Scheduled
注释,因此您可能已经创建了一个 WAR
文件并在 Servlet 容器/应用程序容器中执行它,例如 Tomcat、Wildfly 或 Websphere Liberty.
这也是可能的,但在这种情况下,您不需要设置和使用 unix 系统 cron 调度程序。由于您的 WAR
文件将在应用程序容器中执行,该应用程序容器本身 运行ning 24/7 并且 Application Containers cron scheduler 将用于执行您的fetchFromSFTP
定期方法。
我希望这对您有所帮助,并为您解决问题。
我正在尝试 运行 每 5 分钟执行一次 cronjob,实际任务是触发 curl 终点 来自 java class 中的一个方法。 我的 crontab -e 如下所示: */5 * * * * bash /home/ec2-user/script.sh 上面的行工作正常,但它没有从 Cron 作业 class 触发 FTPConnect.start() 我的 Cron 作业如下所示: @零件 public class CJob{
@Scheduled(cron="*/5 * * * * curl -v http://localhost:8080/apiname/v1/cids/$filename" ) // Every 12 hours
public static void fetchFromSFTP() {
try {
FTPConnect.start();
return;
} catch (Exception e) {
System.out.println("There was an error running this cron.");
e.printStackTrace();
System.exit(1);
}
}
}
哇,你问问题的方式和你提供的信息非常混乱 - 不管怎样,我正在努力回答。
首先 - 据我了解 - 你有一个真正的 cronjob
在 unix 机器上激活,它定期(每 5 分钟)执行任务/脚本。
从您的 cron(或从您的脚本中 - 这无关紧要)您可以使用 java -jar ${yourJarName}
命令调用 java 应用程序。
为此,您当然需要正确安装和设置 Java
(安装 JRE 并可能设置一些环境变量,例如 JAVA_HOME
).
这样的话Java就能启动成功了。要使其启动并 运行 您的应用程序/ JAR
成功,您的程序需要包含一个有效的 main 方法 。它的签名是 public static void main(args[])
。 没有这种方法Java将无法运行任何应用程序。
在主要方法中,您可以做任何您喜欢的事情 - 例如调用您的 fetchFromSFTP
方法来执行任务。
在上述场景中,调度将由 unix 系统 cron 调度程序。
控制由于您使用了 @Scheduled
注释,因此您可能已经创建了一个 WAR
文件并在 Servlet 容器/应用程序容器中执行它,例如 Tomcat、Wildfly 或 Websphere Liberty.
这也是可能的,但在这种情况下,您不需要设置和使用 unix 系统 cron 调度程序。由于您的 WAR
文件将在应用程序容器中执行,该应用程序容器本身 运行ning 24/7 并且 Application Containers cron scheduler 将用于执行您的fetchFromSFTP
定期方法。
我希望这对您有所帮助,并为您解决问题。