我最近添加了一個cron作業,但在發出命令時在路徑中出錯,因此作業從未成功。有什麼方法可以測試我們已經完成的cron更改嗎?測試運行cron條目
請注意,我確實複製並粘貼了命令行中的命令,這只是一個流氓按鍵造成的。
我最近添加了一個cron作業,但在發出命令時在路徑中出錯,因此作業從未成功。有什麼方法可以測試我們已經完成的cron更改嗎?測試運行cron條目
請注意,我確實複製並粘貼了命令行中的命令,這只是一個流氓按鍵造成的。
這個問題也被問過serverfault and has garnered a couple additional answers
以下是Marco's solution轉述的版本: (不知道是否最好ediquite沒有提供鏈接只能回答或不復制別人的解決方案)
使用臨時cron項創建一個環境文件
* * * * * /usr/bin/env > /home/username/cron-env
然後創建一個名爲run-as-cron
一個shell腳本執行使用塔指令t環境。
#!/bin/sh
. "$1"
exec /usr/bin/env -i "$SHELL" -c ". $1; $2"
然後它被用於這樣的:
run-as-cron <cron-environment> <command>
例如
run-as-cron /home/username/cron-env 'echo $PATH'
當我想測試我的cron作業時,我通常將間隔設置得非常低,並密切監視日誌。當我確信輸入正確時,我將間隔設置回理智的值。
例如,運行作業每兩分鐘:
*/2 * * * * echo "Hello World"
而且我在我的日誌文件運行tail -f
(在Debian /var/log/syslog
)。
喬舒亞的答案不適用於我。兩個問題:在cron-env
文件
變量不會被導出(set -a
需要)。
腳本仍然綁定到當前tty(需要setsid
)。
腳本run-as-cron
應
#!/bin/sh
. "$1"
exec setsid /usr/bin/env -i "$SHELL" -c "set -a; . $1; $2" </dev/null
沒有足夠的代表」來解決他的答案或添加評論...
使用命令crontab -e命令 這將打開一個vim編輯器所有你需要做的是 * * * * * /somepath/urscript.sh,確保在日期和腳本路徑之間有適當的空格 執行後,你可以檢入/ var/spool /郵件會有腳本執行或錯誤的完整跟蹤。 對於測試是沒有辦法..但如果你的urscript.sh工作,然後cron選項卡將沒有問題,因爲它是手動完全相同的事情。
你從哪裏得到命令**運行-as-cron的**? –
@IgorGanapolsky我不確定,但它可能是上面的shell腳本的名稱。 – ptf
「創建一個名爲run-as-cron的shell腳本」 – RichardAtHome