![](/img/trans.png)
[英]How to create Connection Pool of GlassFish in Java (ProcessBuilder )
[英]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.