一、我们常常碰到在shell下执行某个命令能够成功,比如执行一个java程序:

java -jar /home/opscoder/topo-audit.jar,但是在crontab下执行会失败。

cornjob为 0 10 * * * java -jar /home/opscoder/topo-audit.jar: 即每天10点去执行这个jar中的main方法

二、查找失败的原因,即查看crotab的执行log, 有如下3种方法,我所用的是ubantu的机器,使用的是方法1、mail任务(Linux UNIX)在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/root 即可查看最近的crontab执行情况。

2、针对UINX系统查询方法(AIX、HP-UX)

在 /var/spool/cron/tmp文件中,有croutXXX00999的tmp文件,tail 这些文件就可以看到正在执行的任务了。

3、针对Linux系统的查询方法(含Redhat、SUSE)

看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察

配图为系统aix root用户默认的crontab

三、针对我的情况,从log中可以看出是/bin/sh: java command not found

这就说明了cron使用的环境变量不是系统的环境变量,而是自己的环境变量,说白了,就是crontab不能读取到/etc/profile下的信息。

四、解决方法:

1、修改crontab来调用一个脚本,而不是直接执行这个jar

即将:cornjob为 0 10 * * * java -jar /home/opscoder/topo-audit.jar

修改为:0 10 * * * /home/opscoder/topo-check.sh

2、创建topo-check.sh

touchtopo-check.sh   #创建topo-check.sh文件
vi topo-check.sh         #编辑topo-check.sh文件,并输入如下内容

#!/bin/bash
source /etc/profile
java -jar /home/opscoder/topo-audit.jar

保存退出。
chmod +x topo-check.sh    #给topo-check.sh可执行权限

这样就大功告成了,需要注意的是需要加上#!/bin/bash,不然crontab可能还是不能执行成功,使用如上的3中方法之一来查看crontab的log,你会发现类似: /bin/sh command /home/opscoder/topo-check.sh not found

附:如果当前用户不能启动crontab,可以使用具有sudo权限或者具有启动权限(service)的用户先启动crontab(service cron status, service cron start, service cron start),然后再切回该用户创建或者cron job(crontab -e)

最新文章

  1. (原创)Windows系统后安装ubuntu,无法选择启动ubuntu。
  2. Tornado框架
  3. DEDECMS之五 单页
  4. 如何安装PANABIT?
  5. ajax跨域相关
  6. 终于成功仿了一次Kalman滤波器
  7. jqure获取单选按钮的值(比如性别)
  8. 跨平台Unicode与UTF8互转代码
  9. linux 下使用crontab 定时打包日志并删除已被打包的日志
  10. 测试ODBC与OLE
  11. Java并发编程:Lock
  12. Unknown system variable 'tx_read_only'
  13. Objective-c 中的算术函数和常数的表示
  14. Bootstrap3.0入门学习系列
  15. Beta阶段报告
  16. 笔记5 bean的作用域
  17. [leecode]---11.container with most water
  18. 转://使用insert插入大量数据的总结
  19. (LIS) P1091 合唱队形 洛谷
  20. Ubuntu 进入、退出命令行的快捷键

热门文章

  1. flexbox父盒子justify-content属性
  2. 【AI】卷积
  3. CM和CDH的安装-进阶完成
  4. PHP代码审计笔记--变量覆盖漏洞
  5. U3D之Editor扩展学习
  6. 使用jquery的 $.grep实现es6的filter效果
  7. gcc/g++基本命令简介
  8. Jquery 网页转换为图片
  9. Linq EF 根据字符列表排序或List根据列表排序以及Linq查询类型转换
  10. linux下的shell操作mysql