2017-04-01 204 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变量人失踪...

任何帮助的感谢提供!