簡體   English   中英

ProcessBuilder (Java) - 創建 cronjob

[英]ProcessBuilder (Java) - Create cronjob

我嘗試使用 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"

一般來說,我使用的代碼可以成功執行其他命令。

有沒有人對這個問題有任何想法? 謝謝

(我找到了一個沒有答案的相關問題)

看起來這里的問題是您的命令僅在從 /bin/ksh、/bin/bash 或 /bin/sh 等 shell 中運行時才有效。 Java 不解釋管道或子命令 () 信息。

您的 Java 命令應確保首先運行您選擇的 SHELL,將實際命令作為參數傳遞給該 shell。 我不確定您使用的是什么 - 並且有一段時間沒有使用 Linux - 但是 BASH 命令將類似於:

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

在 Windows 上,您會看到類似的問題 - Java 可以運行“cmd.exe /c dir”,但不會自行啟動“dir”。

為了便於維護,您最好將 sudo 命令打包到它自己的 script.sh(第一行 !/bin/sh 或其他任何內容)中,並且只從 Java 調用該腳本,然后您可以更改命令而無需重新編譯您的 Java 啟動器.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM