linux下crontab自动执行class程序

上传人:仙*** 文档编号:33283573 上传时间:2021-10-16 格式:DOC 页数:9 大小:38.80KB
收藏 版权申诉 举报 下载
linux下crontab自动执行class程序_第1页
第1页 / 共9页
linux下crontab自动执行class程序_第2页
第2页 / 共9页
linux下crontab自动执行class程序_第3页
第3页 / 共9页
资源描述:

《linux下crontab自动执行class程序》由会员分享,可在线阅读,更多相关《linux下crontab自动执行class程序(9页珍藏版)》请在装配图网上搜索。

1、linux下crontab自动执行class程序linux下crontab自动执行class程序收藏在两天的折磨下,终于将一个自动发送mail的java函数,其中包含一个连接mysql的jar包,一个mail.jar,成功在crontab中运行成功。中间坎坷不断。可能对于理解、熟悉linux的人这不算个事。但是对于新手来说,可能还确实有些困难。因为有一些细节需要注意。首先说我尝试过的方法:1、将添加CLASSPATH的语句和java a一起写入crontab中,执行失败;2、在用户下的.bashrc中添加环境变量CLASSPATH,之后在命令行下执行编译好的a.class-成功将java a写

2、入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文件。像设置CLAS

3、SPATH和source不属于path下的命令;2、d要是一个可执行的文件,不然无法执行;3、crontab中的环境变量和你用户的环境变量不同,要在你的执行文件中加入设置临时变量的语句CLASSPATH=.其实,需要理解的就是这么多。网上有很多如何在crontab中执行java程序的例子,但是第一、都不涉及环境变量,都是hello world;第二、只是一个单一的执行语句。虽然花了两天的时间,但是还是对linux有所理解。希望能给大家一个借鉴。下面是在这个过程中参考的资料:*在freebsd里面用专门的用户运行crontab我基本上没怎么用过,主要源于只要通过修改系统的crontab文件就可以

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

5、细的记录*在linux下做开发首先就是需要配置环境变量,下面以配置java环境变量为例介绍三种配置环境变量的方法。1.修改/etc/profile文件如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。(1)用文本编辑器打开/etc/profile(2)在profile文件末尾加入:JAVA_HOME=/usr/share/jdk1.5.0_05 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar exp

6、ort JAVA_HOME export PATH export CLASSPATH(3)重新登录注解:a.你要将/usr/share/jdk1.5.0_05jdk改为你的jdk安装目录b.linux下用冒号:来分隔路径c.$PATH/$CLASSPATH/$JAVA_HOME是用来引用原来的环境变量的值,在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种常见的错误。d.CLASSPATH中当前目录.不能丢,把当前目录丢掉也是常见的错误。e.export是把这三个变量导出为全局变量。f.大小写必须严格区分。2.修改.bashrc文件这种方法更为安全,它可以把使用这些环境变量的权限控制

7、到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc文件就可以了。(1)用文本编辑器打开用户目录下的.bashrc文件(2)在.bashrc文件末尾加入:set JAVA_HOME=/usr/share/jdk1.5.0_05 export JAVA_HOME set PATH=$JAVA_HOME/bin:$PATH export PATH set CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export CLASSPATH(3)重新登录3.直接在shell下设置变量不赞

8、成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。只需在shell终端执行下列命令:export JAVA_HOME=/usr/share/jdk1.5.0_05 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar*c ro n是系统主要的调度进程,可以在无需人工干预的情况下运行作业。有一个叫做c ro nt ab的命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个c

9、 ro nt ab文件来保存调度信息。可以使用它运行任意一个s he ll脚本或某个命令,每小时运行一次,或一周三次,这完全取决于你。每一个用户都可以有自己的c ro nt ab文件,但在一个较大的系统中,系统管理员一般会禁止这些文件,而只在整个系统保留一个这样的文件。系统管理员是通过c ro n.d en y和c ro n.a ll ow这两个文件来禁止或允许用户拥有自己的c ro nt ab文件。3.1.1 crontab的域为了能够在特定的时间运行作业,需要了解c ro nt ab文件每个条目中各个域的意义和格式。下面就是这些域:第1列分钟15 9第2列小时12 3(0表示子夜)第3列日

10、13 1第4列月11 2第5列星期06(0表示星期天)第6列要运行的命令下面是c ro nt ab的格式:分时日月星期要运行的命令其中表示空格。C ro nt ab文件的一个条目是从左边读起的,第一列是分,最后一列是要运行的命令,它位于星期的后面。在这些域中,可以用横杠-来表示一个时间范围,例如你希望星期一至星期五运行某个作业,那么可以在星期域使用1-5来表示。还可以在这些域中使用逗号,,例如你希望星期一和星期四运行某个作业,只需要使用1,4来表示。可以用星号*来表示连续的时间段。如果你对某个表示时间的域没有特别的限定,也应该在该域填入*。该文件的每一个条目必须含有5个时间域,而且每个域之间要

11、用空格分隔。该文件中所有的注释行要在行首用#来表示。3.1.2 crontab条目举例这里有c ro nt ab文件条目的一些例子:30 21*/apps/bin/cleanup.sh上面的例子表示每晚的2 1:3 0运行/a pp s/b in目录下的c le an up.s h。45 41,10,22*/apps/bin/backup.sh上面的例子表示每月1、1 0、2 2日的4:4 5运行/a pp s/b in目录下的b ac ku p.s h。10 1*6,0/bin/find-namecore-exec rm;上面的例子表示每周六、周日的1:1 0运行一个f in d命令。0,3

12、0 18-23*/apps/bin/dbcheck.sh上面的例子表示在每天1 8:0 0至2 3:0 0之间每隔3 0分钟运行/a pp s/b in目录下的d bc he ck.s h。0 23*6/apps/bin/qtrend.sh上面的例子表示每星期六的11:0 0p m运行/a pp s/b in目录下的q tr en d.s h。你可能已经注意到上面的例子中,每个命令都给出了绝对路径。当使用c ro nt ab运行s he ll脚本时,要由用户来给出脚本的绝对路径,设置相应的环境变量。记住,既然是用户向c ro n提交了这些作业,就要向c ro n提供所需的全部环境。不要假定c

13、ro n知道所需要的特殊环境,它其实并不知道。所以你要保证在s he ll脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。如果c ro n不能运行相应的脚本,用户将会收到一个邮件说明其中的原因。3.1.3 crontab命令选项c ro nt ab命令的一般形式为:Crontab-u user-e-l-r其中:-u用户名。-e编辑c ro nt ab文件。-l列出c ro nt ab文件中的内容。-r删除c ro nt ab文件。如果使用自己的名字登录,就不用使用-u选项,因为在执行c ro nt ab命令时,该命令能够第3章后台执行命令23下载知道当前的用户。3.1.4创建一

14、个新的crontab文件在考虑向c ro n进程提交一个c ro nt ab文件之前,首先要做的一件事情就是设置环境变量E DI TO R。c ro n进程根据它来确定使用哪个编辑器编辑c ro nt ab文件。9 9%的U NI X和L IN UX用户都使用v i,如果你也是这样,那么你就编辑$H OM E目录下的.p ro fi le文件,在其中加入这样一行:EDITOR=vi;export EDITOR然后保存并退出。不妨创建一个名为u se rc ro n的文件,其中u se r是用户名,例如,d av ec ro n。在该文件中加入如下的内容。保存并退出。确信前面5个域用空格分隔。在

15、上面的例子中,系统将每隔1 5分钟向控制台输出一次当前时间。如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用t ty 1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。为了提交你刚刚创建的c ro nt ab文件,可以把这个新创建的文件作为c ro n命令的参数:$crontab davecron现在该文件已经提交给c ro n进程,它将每隔1 5分钟运行一次。同时,新创建文件的一个副本已经被放在/v ar/s po ol/c ro n目录中,文件名就是用户名(即,d av e)。3.1.5列出crontab文件为了列出c ro nt a

16、b文件,可以用:你将会看到和上面类似的内容。可以使用这种方法在$H OM E目录中对c ro nt ab文件做一备份:$crontab-l$HOME/mycron这样,一旦不小心误删了c ro nt ab文件,可以用上一节所讲述的方法迅速恢复。3.1.6编辑crontab文件如果希望添加、删除或编辑c ro nt ab文件中的条目,而E DI TO R环境变量又设置为v i,那么就可以用v i来编辑c ro nt ab文件,相应的命令为:$crontab-e可以像使用v i编辑其他任何文件那样修改c ro nt ab文件并退出。如果修改了某些条目或添24第一部分shell下载加了新的条目,那么

17、在保存该文件时,c ro n会对其进行必要的完整性检查。如果其中的某个域出现了超出允许范围的值,它会提示你。我们在编辑c ro nt ab文件时,没准会加入新的条目。例如,加入下面的一条:现在保存并退出。最好在c ro nt ab文件的每一个条目之上加入一条注释,这样就可以知道它的功能、运行时间,更为重要的是,知道这是哪位用户的作业。现在让我们使用前面讲过的crontab-l命令列出它的全部信息:3.1.7删除crontab文件为了删除c ro nt ab文件,可以用:$crontab-r 3.1.8恢复丢失的crontab文件如果不小心误删了c ro nt ab文件,假设你在自己的$H OM

18、 E目录下还有一个备份,那么可以将其拷贝到/v ar/s po ol/c ro n/u se rn am e,其中u se rn am e是用户名。如果由于权限问题无法完成拷贝,可以用:$crontab filename其中,f il en am e是你在$H OM E目录中副本的文件名。我建议你在自己的$H OM E目录中保存一个该文件的副本。我就有过类似的经历,有数次误删了c ro nt ab文件(因为r键紧挨在e键的右边⋯;)。这就是为什么有些系统文档建议不要直接编辑c ro nt ab文件,而是编辑该文件的一个副本,然后重新提交新的文件。有些c ro nt ab的变体有些怪异,所以在使用c ro nt ab命令时要格外小心。如果遗漏了任何选项,c ro nt ab可能会打开一个空文件,或者看起来像是个空文件。这时敲d el et e键退出,不要按C tr l-D,否则你将丢失c ro nt ab文件。*shell文件内容是以#!/bin/bash开头。linux不以后缀来区分文件格式。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!