飘飞的海

 

Linux定时执行任务

一、at命令

让某个任务只运行一次使用at监控程序。

at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。

at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。at now + time命令可以在指示任务。

假设要运行的脚本(可以直接是命令)是/home/test.sh,那么可能用以下命令运行:

at now +30 min //30分钟后运行该脚本
at>/home/test.sh
at>ctrl+D

上面的方式在编辑定时任务时没法像文本那样可以回退或修改,可以使用下面的方式:

at -f /home/test.sh now +1 min

at中time的时间表示方法

at now + 5 minutes任务在5分钟后运行
at now + 1 hour  任务在1小时后运行
at now + 3 days  任务在3天后运行
at now + 2 weeks 任务在两周后运行
at midnight  任务在午夜运行  //固定时间
at 10:30pm 任务在晚上10点30分 //固定时间

注意:一定要检查一下atq的服务是否启动,有些操作系统未必是默认启动的,linux默认为不启动,而ubuntu默认为启动的。检查是否启动。

service atd status  //检查atd的状态
service atd start   //启动atd服务
atq //查询当前机器上有哪些等待执行的任务, 其第一列为工作号。
atrm  //取消任务, eg: atrm 10 #其中10为工作号。

查看at执行的具体内容:一般位于/var/spool/at目录下面, 用vi打开,在最后一部分就是你的执行程序

 二、crontab

cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

service crond start//启动服务
service crond stop //关闭服务
service crond restart  //重启服务
service crond reload //重新载入配置
service crond status //查看服务状态

你也可以将这个服务在系统启动的时候自动启动,在/etc/rc.d/rc.local这个脚本的末尾加上:

service crond start

直接用crontab命令编辑,cron服务提供 crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除某个用户的cron服务
crontab -e //编辑某个用户的cron服务

比如说root查看自己的cron设置:

crontab -u root -l

基本格式

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

一些例子

//每晚的21:30重启apache。
30 21 * * * /usr/local/etc/rc.d/lighttpd restart

//每月1、10、22日
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

//每天早上6点10分
10 6 * * * date

//每两个小时
0 */2 * * * date

//晚上11点到早上8点之间每两个小时,早上8点
0 23-7/28 * * * date

//每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date

//1月份日早上4点
0 4 1 jan * date

 

 

posted on 2012-09-21 15:11  飘飞的海  阅读(147)  评论(0编辑  收藏  举报

导航