crontab中记录的编写比较简单,下面是一个示例:

  * * * /app/tpssapp/ftpsrc/tools/statTables/statTables.sh > /app/tpssapp/ftpsrc/tools/statTables/statTables.log

表示每天2点执行/app/tpssapp/ftpsrc/tools/statTables/statTables.sh。
这里有个问题是,有时候,因为shell脚本的问题,导致在自己在命令行中运行的shell脚本和crontab中运行的效果不一样。这个问题的原因就是,在shell命令中shell脚本使用了系统的环境变量,一个用户的命令行,起码读取的2个环境变量配置文件:/etc/profile和${HOME}/.bash_profile。如果shell脚本在crontab执行出现问题,原因就是它在执行的时候,没有加载这两个环境变量配置文件。所以,我们需要在shell脚本中自己去指定让shell去设定环境变量。
代码如下:

#! /bin/sh
echo `pwd`
echo `id`
USER_HOME=/home/`whoami`
. /etc/profile
if [ -f ${USER_HOME}/.bash_profile ];
then
echo ${USER_HOME}/.bash_profile
. ${USER_HOME}/.bash_profile
fi BASE_PATH=/app/tpssapp/ftpsrc/tools/statTables
cd ${BASE_PATH}
java -jar statTables-v2..jar

脚本上面的部分,可以作为一个通用的东西,配置在每一个脚本中。

在crontab中执行shell脚本的问题的更多相关文章

  1. Linux中执行shell脚本的4种方法总结

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

  2. Linux中执行shell脚本的4种方法

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

  3. 每天一个linux命令(62):sh命令 /Linux中执行shell脚本的4种方法总结

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

  4. SQL Server 中执行Shell脚本计算本地文件的内容大小

    SQL Server 数据库中除了能执行基本的SQL语句外,也可以执行Shell脚本.默认安装后,SQL中的Shell脚本的功能是关闭的,需要手动打开, 执行以下脚本即可打开该功能. -- 允许配置高 ...

  5. Linux中执行shell脚本命令的4种方法总结

    bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...

  6. linux crontab定时执行shell脚本

    linux下使用crontab命令被用来提交和管理用户的需要周期性执行的任务,示例如下:crontab -e 编辑周期任务30 21 * * * /etc/init.d/smb restart 每晚的 ...

  7. crontab定时执行shell脚本失败的原因

    有一段时间不用crontab定时执行任务了,这次趁着项目实施的机会来进一步分析一下crontab定时任务设置时遇到的一些棘手的问题. crontab -l 查看目前已经设置的crontab信息 cro ...

  8. crontab定期执行shell脚本

    [场景]: 需要定期运行Hadoop的MapReduce [解决办法]: 编写一个运行MapReduce的Shell脚本.然后使用crontab配置定时任务. [Shell脚本] #!/usr/bin ...

  9. crontab定时执行shell脚本

    步骤一    首先我们先看一下是否安装了crontab.一般情况下linux系统会自带crontab及crond.如果没有安装,请使用以下指令安装:yum install vixie-cron     ...

随机推荐

  1. redis 与session

    springboot:session集中存储到redis https://www.cnblogs.com/huiy/p/6907164.html springboot处理session生命周期 htt ...

  2. 设计模式——适配器(Adapter)模式

    概述 什么是适配器?在我们生活中的适配器比如插头转换器(中标转美标).USB接口转换器(type-c转苹果),电脑电源适配器(交流电转低电压直流)等.像这种将两者有差异的东西通过适配器使他们成为相互适 ...

  3. php调用mysql存储过程游标

    <?php $dbtype = 'mysql'; $host = 'localhost'; $dbname = 'test'; $dsn = "$dbtype:host=$host;d ...

  4. DLL_Delphi动态调用

    1.动态调用DLL unit formMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Co ...

  5. 轻量级 HTTP(s) 代理 TinyProxy

      J CentOS 下安装 TinyProxy yum install -y tinyproxy 启动.停止.重启 # 启动service tinyproxy start# 停止service ti ...

  6. chengdongyue的笔记

    ---------------------------------------- Linux 基础 --------------------------------1.Linux的诞生 1.unix两 ...

  7. python 中str format 格式化数字补0方法

      >>> "{0:03d}".format(1)'001'>>> "{0:03d}".format(10)'010'> ...

  8. 20165332实验四 Android开发基础

    20165332 实验四 Android程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:延亿卓 学号:20165332 指导教师:娄嘉鹏 实验日期:2018年5月14日 实 ...

  9. Java获取未知类型对象的属性

    获取未知类型对象的属性通常有两种方式: 一是通过自定义注解的方式,通过获取被注解的属性从而获取属性的值,这种方式也是Spring参数注入的重要实现手段 二是通过反射获取属性的名称,通过属性名从而获取属 ...

  10. IOS-网络(网页开发-UIWebView,HTML,CSS,JavaScript,OC和JS代码互调)

    一.网页基础 // // ViewController.m // IOS_0218_网页开发1 // // Created by ma c on 16/2/18. // Copyright © 201 ...