我遇到了一個特殊問題,我已經設置爲通過crontab運行每分鐘的shell腳本。當作爲定時任務運行時,shell腳本不能完全運行
我使用Pelican作爲博客平臺,並希望半自動化網站在有新帖子時更新的方式。爲此,我創建了一個腳本在與內容相同的目錄中查找名爲respawn
的文件(它通過Dropbox進行同步,因此我只是在那裏創建了與服務器同步的文件)。
編寫該腳本時,如果文件respawn
存在,則會重建博客並刪除它。如果不是,它會退出。
這裏的所謂publish.sh
#!/bin/bash
Respawn="/home/user/content/respawn"
if [ -f $Respawn ]
then
sudo /home/user/sb.sh;rm $Respawn
else
exit 0
fi
exit 0
腳本下面是shell腳本在crontab
* * * * * /home/user/publish.sh
最後,這裏有sb.sh
make html -C /var/www/site/
現在,如果我通過SSH運行腳本,並且存在respawn
,則它可以很好地工作。但是,如果我讓cron執行它,那麼它不會運行shell腳本,但它仍會刪除respawn
文件。
我有一個其他的cron工作,每4小時運行一次,它只是運行sb.sh
,它完美地工作(萬一我忘記發佈一些東西)。
我試過使用用戶的crontab以及將其添加到根目錄,而且我還將用戶添加到sudoers文件,以便它可以在沒有密碼干涉的情況下運行。這兩者似乎都不起作用。我錯過了什麼嗎?
一個明顯的猜測是,cron沒有找到'sudo'的路徑,你可以嘗試在腳本中放置'/ usr/bin/sudo',而不是'sudo'嗎? – favoretti 2013-03-26 12:28:29
此外,爲了防止'respawn'文件被移除,可以在命令之間放置'&&',而不是';',那麼只有當第一個命令返回'0'時,第二個命令纔會被執行,即成功。 – favoretti 2013-03-26 12:29:31