用Java设置Linux的定时任务

4

我希望能够从Java程序中设置Linux定时任务。

我知道要设置定时任务,需要使用crontab工具:

crontab -e

然后指定cron表达式。

我如何从Java程序中以编程方式执行此操作?

谢谢。


你在找ProcessBuilder吗? - Michael Brenndoerfer
2个回答

1

假设您有权限,您可以使用Java的许多文件I/O函数直接修改您的crontab文件。该文件(至少在我的系统上)可以在以下位置找到:

/var/spool/cron/crontabs/paxdiablo

(针对用户)只需对此文件进行任何更改,然后向cron守护程序发送HUP信号即可。
但是,直接编辑该文件是不被赞同的,事实上,它可能会受到保护而无法被修改。
要正确地执行此操作,您可以使用crontab -l命令将当前内容捕获到一个文件中(例如,me.cron)。crontab -l命令将您的crontab文件写入标准输出,而crontab -e则试图在编辑器中打开它。
然后,您可以使用任何手段来修改那个文件(因为它是您创建的)。
然后,运行crontab me.cron会安装该文件(包括您所做的任何更改),并通知cron重新读取它。

0
你可以这样做:
String cmd = "crontab -e";
ProcessBuilder builder = new ProcessBuilder("bash", "/c" , cmd);
builder.redirectErrorStream(true);
Process p = builder.start();

为什么要重定向错误流?如果我可以写入进程的输出流,然后再写入它呢? - maress

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接