2010-01-12 373 views
2

我想從FreeBSD上的cron執行一個shell腳本。Crontab沒有錯誤,但不執行腳本

爲了測試是否crontab工作可言,我寫的行

* * * * * echo "Hello" > /home/myuser/logile 

,它做工精細。

但是當試圖執行任何腳本時,它什麼也不做,甚至沒有發生錯誤。 (在我試圖運行該腳本是一樣的echo命令) 下面是crontab -l輸出:

SHELL=/bin/sh 
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin 
HOME=/home/myuser 
MAILTO=myuser 
* * * * * /home/myuser/shellscript.sh > /home/myuser/logfile 

爲什麼腳本沒有得到執行,雖然crontab顯然是運行? 所有文件的權限設置爲rwxr-xr-x

+0

你能發佈劇本?我知道你說是微不足道...但...:P – 2010-01-12 16:45:04

+0

的腳本是: #/ bin/sh的 回聲「你好」 和interaktive外殼;-)工作 – crontabOnFreebsd 2010-01-12 17:39:32

回答

1

你試過

* * * * * /bin/sh /home/myuser/shellscript.sh > /home/myuser/logfile 
+0

是的,我試過了,但沒有反應。 – crontabOnFreebsd 2010-01-12 16:36:16

0

如果您收到一個錯誤,那麼你的日誌文件可能無法捕捉到它,試試這個:

* * * * * /home/myuser/shellscript.sh > /home/myuser/logfile 2> /home/myuser/errorfile 

它一直以來我沒有任何的cron東西一會兒;但事情總是用得到我:

  1. 環境變量未設置:一般來說,我認爲有必要建立完整路徑(甚至是東西像「貓」)的所有命令[或至少設置ENV腳本本身內的變量]。

  2. 確保擁有腳本等的用戶確實是正在運行腳本的用戶:當您從交互式shell進行測試時,這可能不是同一用戶。腳本可能寫入的目錄/文件也一樣。

  3. 此外:檢查電子郵件爲root用戶 - 您可能會發現錯誤已被轉移到收件箱,這可能會幫助您進一步排除故障。

1

cron通過電子郵件發送任何錯誤到crontab文件的所有者(通常是「root」,以便您可以檢查該帳戶的電子郵件)。要有任何錯誤郵寄到「crontabOnFreebsd」把:

MAILTO=crontabOnFreebsd 

在您的crontab(靠近頂部)。

欲瞭解更多信息發出以下命令:

man 5 crontab 
2
* * * * * /bin/sh /home/myuser/shellscript.sh 

* * * * * /bin/bash /home/myuser/shellscript.sh 

在MacOSX的10.6爲我工作作爲rootuser

2

是否檢查命令行有一個換行/ CR在該行的結束?我掙扎了幾個小時試圖找到關於cron的非執行PHP腳本一個原因,當我根本就沒有壓在該行的末尾輸入的時候我編輯與crontab -e命令在cron作業:-)

+0

非常感謝您的信息。按下輸入結束行解決了我的問題。謝謝。 – Phoca 2017-02-20 15:55:39