Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从java设置linux cron作业_Java_Cron_Crontab_Schedule - Fatal编程技术网

从java设置linux cron作业

从java设置linux cron作业,java,cron,crontab,schedule,Java,Cron,Crontab,Schedule,我希望能够从java程序设置linux cron作业 我知道要设置cron作业,我使用crontab工具: crontab -e 然后指定cron表达式 如何从java程序以编程方式执行此操作 谢谢您可以这样做: String cmd = "crontab -e"; ProcessBuilder builder = new ProcessBuilder("bash", "/c" , cmd); builder.redirectErrorStream(true); Process p = bui

我希望能够从java程序设置linux cron作业

我知道要设置cron作业,我使用crontab工具:

crontab -e
然后指定cron表达式

如何从java程序以编程方式执行此操作


谢谢

您可以这样做:

String cmd = "crontab -e";
ProcessBuilder builder = new ProcessBuilder("bash", "/c" , cmd);
builder.redirectErrorStream(true);
Process p = builder.start();
您可以(假设您有权限)使用Java的许多文件I/O函数直接修改crontab文件。该文件(至少在我的系统上)可在以下位置找到:

/var/spool/cron/crontabs/paxdiablo
(对于用户
paxdiablo
)。只需对该文件进行任何更改,然后向
cron
守护进程发送HUP信号

然而,直接编辑该文件是不可取的,事实上,它很可能会受到保护,不受您的影响

要正确执行此操作,可以使用
crontab-l
命令将当前内容捕获到文件中(例如,
me.cron
)。
crontab-l
命令将crontab文件写入标准输出,而
crontab-e
则试图在编辑器中打开它

然后,您可以使用任何方式修改该文件(因为您创建了它,所以它是您的)


然后,运行
crontab me.cron
将安装该文件(包括您所做的任何更改),并通知
cron
,以便它重新读取该文件。

您正在寻找ProcessBuilder吗?为什么重定向错误流?如果我可以写入进程的outputstream,然后再写入它?