深入解析Linux下的定时任务_unix linux

在做定时任务之前,先检查一下当前的系统时间【date  "+%Y-%m-%d %T"】和硬件时钟时间【hwclock】:

[root@localhost test]# date  "+%Y-%m-%d %T"
2013-07-01 07:57:52

[root@localhost test]# hwclock
2013年07月01日 星期一 07时57分48秒  -0.059059 seconds

上面的结果显示,我当前的时钟时间都不正确,先设置系统时间:
[root@localhost test]#  date -s "2013-07-09 08:47:00"
2013年 07月 09日 星期二 08:47:00 CST

再设置硬件时间和系统时间同步
[root@localhost test]# hwclock  -w

下面再查看系统时间和硬件时钟时间:

[root@localhost test]# hwclock
2013年07月09日 星期二 08时47分07秒  -0.180411 seconds
[root@localhost test]# date  "+%Y-%m-%d %T"
2013-07-09 08:47:13
[root@localhost test]#

时间正常了,下面就可以做定时任务了,在Linux下做定时任务比较简单,使用crontab命令就可以。为了方便查看效果,先编辑一个test.sh,内容就是格式化显示当前的系统时间:

date  "+%Y-%m-%d %T"

执行一下查看结果:

[zl@localhost test]$ sh test.sh
2013-07-09 09:03:28

好,结果是正常的。下面简单学习一下crontab 命令:

常用参数:
crontab   -l   //查看当前用户下的cron任务
crontab -e  //编辑当前用户的定时任务

[zl@localhost test]$ crontab -l
52 8 * * * sh /home/zl/test/test.sh >> /home/zl/test/test_chrontab.txt

说明我的当前用户下,有一个定时任务,我们来分析一下这个定时任务:

52 8 * * * sh /home/zl/test/test.sh >> /home/zl/test/test_chrontab.txt

任务中分成6部分,抽象出来为

分 时   日   月  周       命令

*  *  *  *  *  command

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

以上面的为例,这个任务是在每天的8点52分执行,执行的命令为sh /home/zl/test/test.sh >> /home/zl/test/test_chrontab.txt

如果我们需要再添加一个每周五的23点50分执行一个周报的任务,则

执行crontab -e【执行文字编辑器来设定时程表,内定的文字编辑器是 vi】,在任务中添加50 23 * * 5 sh /home/zl/weekly_report.sh即可:

[zl@localhost test]$ crontab -e
crontab: installing new crontab

再次查看任务列表,又添加了一个新的任务
[zl@localhost test]$ crontab -l
52 8 * * * sh /home/zl/test/test.sh >> /home/zl/test/test_chrontab.txt
50 23 * * 5 sh /home/zl/weekly_report.sh
[zl@localhost test]$

下面再附一些别人使用的例子:

0 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache

时间: 2024-12-20 16:07:07

深入解析Linux下的定时任务_unix linux的相关文章

深入解析Linux下的定时任务

在有了邮件的告警功能后,下一步要做的就是做一个定时任务,让这个任务按周期执行,这样就能周期性地收到告警信息了   在做定时任务之前,先检查一下当前的系统时间[date  "+%Y-%m-%d %T"]和硬件时钟时间[hwclock]: [root@localhost test]# date  "+%Y-%m-%d %T" 2013-07-01 07:57:52 [root@localhost test]# hwclock 2013年07月01日 星期一 07时57分

编写Linux实用程序的艺术_unix linux

    Linux 和其他类 UNIX 系统总是附带了大量的工具,它们执行从显而易见的到不可思议的广泛功能.类 UNIX 编程环境的成功很大程度上归功于工具的高品质和选择,以及这些工具之间相互衔接的简易性. 作为开发人员,您可能会发现现有实用程序并不总是能够解决问题.虽然能够通过结合使用现有实用程序来容易地解决许多问题,然而解决其他问题却至少需要一些实 际的编程工作.这些后面的任务通常是创建新实用程序的候选任务,结合现有实用程序来创建新实用程序可以通过做最少的工作来解决问题.本文考察优秀实用程序

[基础知识]Linux新手系列之五_unix linux

上 给Linux新手 [系列之五] "大夫,我痛,告诉我怎么办吧" "别着急,你先说你哪里怎么痛了" "噢,哪里痛还不一样治啊,我肚子痛,快告诉我怎么办吧,我很着急的" "别着急,再说说你昨天都干了些什么啊?" "怎么跟昨天干什么还有关系?我昨天就干了我每天作的事情嘛,我觉得很正常,你怎么还不告诉我怎么办?不想说就别说". "别着急,你再想想,昨天作了什么跟平时不同的事情?" "

Linux 管理员手册(4)_unix linux

    本章说明Linux的内存管理特征,即虚拟内存和磁盘缓存.描述系统管理员应该考虑的东西.工作和目的.     什么是虚拟内存? Linux支持虚拟内存, 就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大.核心把当前不用的内存块存到硬盘,腾出内存给其他目的.当原来的内容又要使用时,再读回内存.这对用户全透明:运行于Linux的程序只看到大量的可用内存而不甘心哪部分在磁盘上.当然,读写硬盘比真的内存慢(慢千倍),所以程序运行较慢.用做虚拟内存的这部分硬盘叫 对换空间. Linux可以使用

给Linux新手[系列之四]_unix linux

要讲硬盘分区了.在讲这个问题之前,我先来讲讲概念问题,什么是概念问题呢?你还记得第一次,绝对的第一次听到A:盘,B:盘,C盘时候的感觉么?在那之前自己也许知道计算机有个存储数据的地方,因为在电视上或者广告上看到过磁带机(我一直不知道为什么到了很久很久那种一个傻姑娘在一个磁带柜前面操作一个现在看来是垃圾的磁带设备会不停的成为电视台播放电脑题材节目的缺省背景)或者硬盘的图象.但是你并没有一个概念计算机究竟怎么使用这些设备,直到你第一次打出dir a:或者打开explorer看到A: C:字样的目录树

[基础知识]Linux新手系列之四_unix linux

上 给Linux新手 [系列之四] OK,要讲硬盘分区了.在讲这个问题之前,我先来讲讲概念问题,什么是概念问题呢?你还记得第一次,绝对的第一次听到A:盘,B:盘,C盘时候的感觉么?在那之前自己也许知道计算机有个存储数据的地方,因为在电视上或者广告上看到过磁带机(我一直不知道为什么到了很久很久那种一个傻姑娘在一个磁带柜前面操作一个现在看来是垃圾的磁带设备会不停的成为电视台播放电脑题材节目的缺省背景)或者硬盘的图象.但是你并没有一个概念计算机究竟怎么使用这些设备,直到你第一次打出dir a:或者打开

给Linux新手[系列之一]_unix linux

你从来只用过Windows,从来没接触过UNIX,只知道把一个文件拽来拽去,只知道硬盘就是C: D: E:却从来没有研究过分区表,也许会用VC编个程序,很习惯它的集成环境.... 有一天,不管什么原因了,也许是看报纸上那些把内存和硬盘都分不清楚的记者的吹嘘,或者是老板要求你用它作个项目,或者是同学们都有了你没有觉得很土,或者你听说找工作有这个的经验就有更大希望....不管怎样,你想在自己的机器上安装一个Linux.OK,这个文章就是给你写的,因为从现在开始,你会有成堆的问题你会觉得从前在wind

[基础知识]Linux新手系列之一_unix linux

  给Linux新手 [系列之一] 你从来只用过Windows,从来没接触过UNIX,只知道把一个文件拽来拽去,只知道硬盘就是C:\ D:\ E:\却从来没有研究过分区表,也许会用VC编个程序,很习惯它的集成环境.... 有一天,不管什么原因了,也许是看报纸上那些把内存和硬盘都分不清楚的记者的吹嘘,或者是老板要求你用它作个项目,或者是同学们都有了你没有觉得很土,或者你听说找工作有这个的经验就有更大希望....不管怎样,你想在自己的机器上安装一个Linux.OK,这个文章就是给你写的,因为从现在开

Linux的目录结构_unix linux

Linux的目录结构比DOS复杂多乐,让我们来看看它的目录里有些什么东西吧. /bin (binary)    这个目录包含着所有的标准命令和应用程序. /boot    这里存放给lilo使用的一些文件. /dev (device)    这个目录包含着与终端和外设的文件接口,在Linux下,文件和设备是用同种方法访问   的.系统上的每个设备都应该在这里有一个对应的设备文件.    考察一下这个宏:    #define putchar(ch) fputc(ch,stdout)    其中f