`
wangcheng
  • 浏览: 1454478 次
  • 性别: Icon_minigender_1
  • 来自: 青岛人在北京
社区版块
存档分类
最新评论

学习Cron

阅读更多

Cron是Linux内置的定时执行工具.

使用 ps -elf|grep cron 查看cron是否运行

如果服务没有启动,可使用下面的命令.

/sbin/service crond start   //启动服务
/sbin/service crond stop   //关闭服务
/sbin/service crond restart   //重启服务
/sbin/service crond reload   //重新载入配置

想了解cron 什么时候被唤醒开始运行它的任务,可以查看/etc/crontab

cat /etc/crontab

内容大概如下

  1. # run-parts   
  2. 01 * * * * root run-parts /etc/cron.hourly   
  3. 02 4 * * * root run-parts /etc/cron.daily   
  4. 22 4 * * 0 root run-parts /etc/cron.weekly   
  5. 42 4 1 * * root run-parts /etc/cron.monthly   

每列的顺序表示:
[第一列] 分钟(0-59)
[第二列] 小时(0-23)
[第三列] 日期(1-31)
[第四列] 月份(1-12)
[第五列] 星期(从0-6 分别表示星期天到星期六)
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。以下举几个例子说明问题:

  1. #每天早晨6点执行。 '>>' 表示输出信息追加到/tmp/test.txt中   
  2. 0 6 * * * echo "Good morning." >> /tmp/test.txt    
  3.   
  4. #每两个小时执行   
  5. 0 */2 * * * echo "Hello World." >> /tmp/test.txt   
  6.   
  7. #每分钟执行一次   
  8. */1 * * * * echo "Hello World." >> /tmp/test.txt   
  9.   
  10. #每周(星期一,星期三,星期五)的早晨4:02分执行   
  11. 02 4 * * 1,3,5 echo "Hello World." >> /tmp/test.txt   
  12.   
  13. #每个月的4号和每周的周一到周三的早上11点执行   
  14. 0 11 4 * 1-3 echo "Hello World." >> /tmp/test.txt  

明白了时间设置格式,现在来设置cron服务

最常用的cron命令:
crontab -l     //显示已经存在的cron任务
crontab -e    //编辑某个用户的cron任务列表
crontab -u    //设定某个用户的cron服务
crontab -r     //删除某个用户的cron服务

下面是我使用cron的过程

首先用crontab -e 加入我的定时任务.(crontab -e 可以对提交的作业进行语法检查) , 这是一个类似 vi 的环境,输入

*/1 * * * * /home/myJava/mycode.sh

然后:x保存退出

接着用crontab -l 查看一下, 确认任务制定成功, 等了1分钟,却没有看到程序的log输出, 下面是mycode.sh

  1. /usr/local/ant/bin/ant -f /home/myJava/build.xml mytest  

 单独执行mycode.sh没有问题, 查看cron的运行日志

tail -f /var/log/cron

看到mycode.sh已经执行了, 在看看cron执行信息, cron会把任何输出都email到root的信箱.

tail -f /var/spool/mail/root

看到Error: JAVA_HOME is not defined correctly. We cannot execute java,

可使用 echo $JAVA_HOME 可以看到java home啊, 百度一下, 有人说cron里的命令必须都是绝对路径的.修改sh如下

  1. export JAVA_HOME=/usr/java/jdk1.5.0_07   
  2. /usr/local/ant/bin/ant -f /home/myJava/build.xml mytest  

OK, 数据库有新数据了, tail -f /var/spool/mail/root 也能看到ant的输出, 可java程序中用log4j打的log却没有

在网上没有找到好的解决方法, 暂时使用一个折中方式, 修改cron任务,把log输出到指定文件

  1. */1 * * * * /home/myJava/mycode.sh >> /home/myJava/myLog.log  

相关连接

http://www.chinaunix.net/jh/7/104984.html

http://blog.21club.cn/blog.php?uid-1-do-showone-tid-58-page-1.html

 

分享到:
评论
1 楼 wangcheng 2007-07-30  
Cron Help Guide
http://www.linuxhelp.net/guides/cron/

相关推荐

Global site tag (gtag.js) - Google Analytics