crontab备份数据库发现一直提示exp命令不存在问题处理


首先说下前提,使用oracle用户编辑crontab,执行了一个备份oracle数据库的脚本,如果手动的执行的话是没有问题,但是放在crontab定时器里面就会发现,备份出来的文件很小,解压出来没有东西,最后经过查询发现是因为无法读取环境变量的原因

解决方案

  1. 所有的命令需要写成绝对路径形式:/usr/local/bin/docker
  2. 在shell脚本开头使用如下代码
    1
    2
    3
    4
    #!/bin/sh

    . /etc/profile
    . ~/.bash_profile
  3. /etc/crontab中添加环境变量,在可执行命令之前添加命令. /etc/profile;/bin/sh,使得环境变量生效,例如:
    1
    20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh