首页 文章

Shell脚本在单独运行时工作正常但在cron作业中进行调度时失败

提问于
浏览
0

我有一个脚本,它在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用户来安排这项工作 .

你能帮我解决一下我在这里缺少的东西吗?

2 回答

  • 0

    这是一个反复出现的问题 . cron作业失败的最常见原因是:

    • 关于相对文件路径的假设 - 在整个过程中使用完整的绝对文件名

    • 关于环境的假设 . 你应该“源”你依赖的启动文件,通常(对于ksh):

    . /etc/profile
    . ~/.profile
    . "$ENV"
    

    $ENV 是可选的,但使用时通常具有值 ~/.kshrc .

  • 1

    crontab以非登录,非交互模式调用shell . 在这种模式下,Bash shell不会加载通常的启动文件,例如/ etc / profile,〜/ .bash_profile,〜/ .bash_login,〜/ .profile,〜/ .bashrc,它们可能会丢失一些重要的环境变量定义,如PATH .

    您可以通过在crontab中运行ksh脚本之前获取特定的启动文件(/ etc / profile,〜/ .profile在ksh中,如果它们存在且可读)来解决您的问题 . 你可以“man ksh”来查看ksh启动过程的细节 .

相关问题