linux下crontab自动执行class程序

本文介绍了作者在Linux环境下,使用crontab自动执行包含环境变量的Java程序所遇到的问题及其解决方案。经过多次尝试,最终发现crontab只能执行可执行程序或shell文件,并且环境变量需要在执行文件中设置。文章强调了配置环境变量的重要性,特别是对于非root用户。还提供了crontab命令的使用方法和crontab文件的格式,以及配置和使用Linux环境变量的几种方法。
摘要由CSDN通过智能技术生成

     在两天的折磨下,终于将一个自动发送mail的java函数,其中包含一个连接mysql的jar包,一个mail.jar,成功在crontab中运行成功。

     中间坎坷不断。可能对于理解、熟悉linux的人这不算个事。但是对于新手来说,可能还确实有些困难。因为有一些细节需要注意。

      首先说我尝试过的方法:

     

      1、将添加CLASSPATH的语句和java a一起写入crontab中,执行失败;

      2、在用户下的.bashrc中添加环境变量CLASSPATH,之后在命令行下执行编译好的a.class--成功

           将java a写入crontab,设定好时间--失败

      3、将写的.java和所需要的jar包打包生成一个jar包b.jar,之后在crontab中写入java -jar b--失败

      4、将所有命令写入一个shell文本c.sh,然后在crontab中写入sh  c.sh--失败

      5、将所有命令写入一个文本d,然后在crontab中写入 source d--失败

      6、将CLASSPATH一并写入d,然后在crontab中写入 source d--失败

      7、最后将CLASSPATH一并写入d,然后在crontab中写入 d--成功!

  其中需要注意的地方,其实就是3点:

  1、crontab只能执行可执行的程序,或者是一个shell文件。像设置CLASSPATH和source不属于path下的命令;

  2、d要是一个可执行的文件,不然无法执行;

  3、crontab中的环境变量和你用户的环境变量不同,要在你的执行文件中加入设置临时变量的语句CLASSPATH=......

     

      其实,需要理解的就是这么多。网上有很多如何在crontab中执行java程序的例子,但是第一、都不涉及环境变量,都是“hello world”;第二、只是一个单一的执行语句。

      虽然花了两天的时间,但是还是对linux有所理解。希望能给大家一个借鉴。

 

下面是在这个过程中参考的资料:

************************************     

      在freebsd里面用专门的用户运行crontab我基本上没怎么用过,主要源于只要通过修改系统的crontab文件就可以完成所有操作了,而且立即生效。
如果你需要以非root身份运行的时候只要在/etc/crontab的文件里面写好运行身份就可以了。
当然有些情况下,可能还是需要赋予普通用户cron的权力,只要那个以自己的身份运行crontab -e就可以,唯一的区别是,里面千万别写运行身份(/etc/crontab里面是有运行身份的),因为运行身份不需要指明,你以那个身份运行的crontab -e,身份就是那个。另外写cron命令有一个非常需要注意的地方就是要么你声明PATH变量,要么你把绝对路径写上,否则一定运行不了。
如果你想知道你的cron为什么没执行,可以查看/var/log/cron,每次运行cron都会有详细的记录

*************************************

      在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法。

 

1.修改/etc/profile文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值