zoukankan      html  css  js  c++  java
  • Linux 定时执行shell脚本_crontab

    1、查看任务[oracle@XXXXX OracleBackA]$ crontab -l

    2、新增任务[oracle@XXXXX OracleBackA]$ crontab -e

    3、每天14点40执行/backup/OracleBackA/sh.sh 脚本,日志输出到 /backup/OracleBackA/shlog.txt

    40 14 * * * /backup/OracleBackA/sh.sh &>> /backup/OracleBackA/shlog.txt

    问题

    1、/bin/sh: /backup/OracleBackA/sh.sh: Permission denied

    shell脚本没有执行权限,chmod 755  sh.sh

    2、/backup/OracleBackA/sh.sh: line 59: ctxlc: command not found
    /backup/OracleBackA/sh.sh: line 67: sqlplus: command not found
    /backup/OracleBackA/sh.sh: line 69: ctxlc: command not found
    /backup/OracleBackA/sh.sh: line 71: [: : integer expression expected
    /backup/OracleBackA/sh.sh: line 106: sqlplus: command not found
    /backup/OracleBackA/sh.sh: line 108: [: : integer expression expected
    /backup/OracleBackA/sh.sh: line 136: [: : integer expression expected
    /backup/OracleBackA/sh.sh: line 136: [: : integer expression expected

    你可能已经注意到上面的例子中,每个命令都给出了绝对路径。当使用c r o n t a b运行s h e l l 
    脚本时,要由用户来给出脚本的绝对路径,设置相应的环境变量。记住,既然是用户向c r o n 
    提交了这些作业,就要向c r o n提供所需的全部环境。不要假定c r o n知道所需要的特殊环境,它 
    其实并不知道。所以你要保证在s h e l l脚本中提供所有必要的路径和环境变量,除了一些自动 
    设置的全局变量。

    有两个方法,在shell里export或者复制到/etc/profile里面

    第一种解决办法:

    查看运行c r o n t a b任务的用户的环境变量:.bash_profile文件  vi /home/oracle/.bash_profile

    将export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID  这些路径都复制到shell脚本中,放在shell脚本开头

    shell脚本中:

    export ORACLE_BASE=/u01/oracle
    export  ORACLE_HOME=/u01/oracle/app/12.1.0

    第二种解决办法:

    将.bash_profile文件中的设置都复制到/etc/profile 文件中,不过要用root用户

  • 相关阅读:
    程序员为什么难管理?
    Python多继承
    如何从程序员走向管理层?
    为什么Python能超越JAVA,有什么优势?
    HTTP协议简介与在python中的使用详解
    人力资源管理书籍推荐,这本书HR必看
    把市面上的书翻了个遍,找到这五本经典营销管理书籍推荐给大家
    服务器部署之 cap deploy:setup
    【转】D3DXLoadSkinMeshFromXof函数及.x在不同dx版本中
    【转】C/C++字节对齐算法
  • 原文地址:https://www.cnblogs.com/xuxin-1989/p/4262376.html
Copyright © 2011-2022 走看看