ProcessBuilder(Java)-创建cronjob

时间:2020-03-12 18:14:02

标签: java cron processbuilder

我尝试使用ProcessBuilder通过Java代码创建cronjob, 但是命令执行返回退出代码-1。 我使用的命令是以下命令:

"sudo su root -c (crontab -l 2>/dev/null; echo \"*/15 * * * * /test/scripts/a_script.sh\") | crontab - && echo OK || echo FAILED"

通常,我使用的代码会成功执行其他命令。

有人对这个问题有想法吗?谢谢

(我发现一个相对的问题,没有答案)

1 个答案:

答案 0 :(得分:0)

这里的问题似乎是您的命令仅在从/ bin / ksh,/ bin / bash或/ bin / sh之类的shell中运行时才有效。 Java不解释管道或子命令()信息。

您的Java命令应该确保首先运行所选的SHELL,并将实际命令作为参数传递给该外壳。我不确定您使用什么-一段时间未使用Linux-但BASH命令类似于:

/bin/bash -c "sudo (blah | blah)"

在Windows上,您会看到类似的问题-Java可以运行“ cmd.exe / c dir”,但不能自行启动“ dir”。

为了便于维护,最好将sudo命令打包到其自己的script.sh中(第一行!/ bin / sh或其他内容),并且仅从Java调用该脚本,然后您可以更改该命令而无需重新编译您的Java启动器。

相关问题