2017-04-01 216 views
0

即時通訊存在bash腳本未從cron運行的問題。當我從cli運行它作爲根時,它運行良好。正如你所看到的,當腳本完成時我寫入了一個txt文件。當腳本從cron運行時,這也是完成的,只有Oracle dmp沒有保存(顯然沒有壓縮)。這項工作做得非常快,所以我想它不會執行oracle的輸出...Cron不能正確運行shell腳本

謝謝你的幫助!

backup.sh

#!/bin/bash 
#makes an Oracle backup and zips the created file 
TIME=`date +%F_%H:%M:%S` 
FILENAME=Backup-$TIME 

exp userid=user/password file=/home/user/DatabaseBackup/$FILENAME.dmp 
zip /home/user/DatabaseBackup/$FILENAME.zip /home/user/DatabaseBackup/$FILENAME$ 
find /home/user/DatabaseBackup/ -mtime +0 -type f -delete 

echo "Backup completed:" `date +%F_%H:%M:%S` >> /home/user/scripts/logBackup.txt 
#END 

crontab -e命令 26 * * * * /home/user/scripts/backup.sh

+1

添加可執行文件的完整路徑(date,exp,zip,find)。 – Cyrus

+1

在請求幫助之前,您應該捕獲cron作業(stdin和stderr)的輸出,因爲在此輸出中找到的任何錯誤消息都可能使您更容易找到原因,或者讓其他人幫助您。在'cron'中執行的作業可能有不同的環境,並且很可能你的問題來自於'PATH'或其他一些變量的區別,你使用的任何程序都依賴於它。 – Fred

+0

Fred1你說得對,最好檢查一下叫做的程序的輸出!生病了,看看有什麼問題 – helmut1978

回答

0

好吧,我所做的是:

我加

>> /home/user/cron.txt 2>&1 

這對我的cronjob聲明,這是我現在的玉米作物的輸出。

有了這個很容易發現,爲Oracle一些evironmet變量人失蹤...

任何幫助的感謝提供!