深入解析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-11-01 01:14:34

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

深入解析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]# hwclock2013年07月01日 星期一 07时57分48秒  -0.059059 seconds 上面的结果显示,我当前的时钟时间都不正确,先设置系统时间:[root@l

深入解析Linux下MySQL数据库的备份与还原_Mysql

深入解析Linux下MySQL数据库的备份与还原 1. 备份 [root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录) [root@localhost mysql]# mysqldump -u root -p voice>voice.sql,输入密码即可. 2. 还原法一:[root@localhost ~]# mysql -u root -p 回车,输入密码,进入MySQL的控制台"mysql>&

位图解析-linux下/dev/fb0怎样解析成windows下可以显示的图片

问题描述 linux下/dev/fb0怎样解析成windows下可以显示的图片 cat /dev/fb0 > /tmp/jietu 这样截取到的原始位图,复制到windows下之后改名为.png或者.bmp都不能打开: 据说要根据设备分辨率和颜色位深解析之后才可以,求具体解析算法,最好有代码~~ 解决方案 文件/dev/fb0就是控制屏幕上的每一点的颜色的文件. 然后通过 FrameBuffer 机制,把屏幕上的每个点映射成一段线性内存空间,最终可以获取到显示缓冲,即屏幕上显示的内容的图片. 解

深入解析Linux下\r\n的问题_C 语言

常在Linux下操作,难免要遇到\r\n问题,特别在很多地方比如最近的邮件发送,怎么都\r\n了,以前只有\n的时代好像已经过去了,因为我是一个比较喜欢总结的人,一个喜欢理论先行的人,所以,认真的测试并且理解了一番,尽管我个人认为是比较可以了,但,如果哪位高手看出了不妥之处,不吝赐教!一.例子源文件:main.c例一:#include <stdio.h>int main(void){       printf("dddddd"); //6个d       printf(&q

解析Linux下Varnish缓存的配置优化_php技巧

Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好. 但与老牌的squid相比,各有各的优劣势,网上大量的相对比较只是在其个人对自己熟悉的应用的最大使用上的发挥而已,可能squid到了有能力的人手上才足以发挥最强大的威力Varnish采用了"Visual Page Cache"技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存.磁盘中交换文件

解析Linux下磁盘乱序的问题

大家在使用linux过程当中肯定遇到过磁盘乱序的问题.一般情况下引起磁盘乱序有几种可能,比如磁盘是通过raid卡连接到服务器的,raid卡电池没电来,这时候如果服务器掉电的情况下可能会引起磁盘乱序.再就是比如新的服务器,但raid驱动是比较老的版本,一旦重启也经常会有乱序的可能.再就是服务器磁盘较多,sata/ssd存在混用的情况下也会有乱序的可能. 针对这种乱序的情况应该如何解决呢?这里我总结了一种比较好的结局方法.下面这个脚本的目的是通过udevinfo(centos5)或者udevadm(

深入解析Linux下的磁盘缓存机制与SSD的写入放大问题

前段时间在开发一个使用SSD做缓存的系统,在高速写入数据时会出现大量的磁盘缓存.太多的磁盘缓存如果没有及时的写入磁盘中,在机器出现问题时是非常危险的,这样会导致很多的数据丢失,但是如果实时的将数据刷入磁盘中,这样写入效率有太低了.为了弄明白Linux系统的这种磁盘写入特性,最近深入的学习了一下. VFS(Virtual File System)的存在使得Linux可以兼容不同的文件系统,例如ext3.ext4.xfs.ntfs等等,其不仅具有为所有的文件系统实现一个通用的外接口的作用,还具有另一

解析linux下安装memcacheq(mcq)全过程笔记

memcacheQ是一个单纯的分布式消息队列服务.一,MEMCACHEQ的应用背景Web应用中为什 么 会需要消息队列?主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达 mysql,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too manyconnections错误.通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力.在Web2.0的时代,高并发的情况越来越常见,从 而使消息队列有成为居家必备的

java里怎么解析linux下编译的.so文件里的类

问题描述 现在有个项目需求:支持上传.so文件,并获得里面定义的类,如何解决?这个功能原本是上传jar包,然后用JarInputStream进行解析,把类加入ClassLoader然后利用,现在需要支持上传.so文件,该怎么做? 解决方案 解决方案二:.so里还有java类?是用jni调用里面的函数吧?解决方案三:是获得c++类,只是要得到里面定义的类,不调用函数引用1楼houjin_cn的回复: .so里还有java类?是用jni调用里面的函数吧? 解决方案四:1)精确地方式就是解析so文件,