我有一个脚本,它在shell中运行时运行得很好。
但是在cron作业中安排相同的脚本时,运行不完整或部分。 它会突然终止
我已安排cron作业每15分钟运行一次。
这是cronjob的代码。
0,15,30,45 * * * * /home/convteam/Conversion/update_revenue/RunUpdateRevenue.ksh > /home/convteam/Conversion/update_revenue/RunUpdateRevenue.log
我正在使用名为'convteam'的用户而不是root用户安排作业。
你能帮助我,我在这里缺少什么吗?
答案 0 :(得分:1)
这是一个反复出现的问题。 cron作业失败的最常见原因是:
关于相对文件路径的假设 - 在
有关环境的假设。您应该“获取”您依赖的启动文件,通常(对于ksh):
. /etc/profile
. ~/.profile
. "$ENV"
$ENV
是可选的,但在使用时通常具有值~/.kshrc
。
答案 1 :(得分:0)
crontab以非登录,非交互模式调用shell。在这种模式下,Bash shell不会加载通常的启动文件,例如/ etc / profile,〜/ .bash_profile,〜/ .bash_login,〜/ .profile,〜/ .bashrc,它们可能会丢失一些重要的环境变量定义,如PATH。
您可以通过在crontab中运行ksh脚本之前获取特定的启动文件(/ etc / profile,〜/ .profile在ksh中,如果它们存在且可读)来解决您的问题。你可以“man ksh”来查看ksh启动过程的细节。