linux下的“定时器”:crontab

1、概述

crontab是用来设置在固定时间点或时间间隔执行某条指令,类似于时程表。使用-u user是指定user用户的时程表。

2、参数

-e[UserName] :调出编辑器,编辑定时任务,打开后里边有多重文本编辑器,可更具自己偏好选择,若未指定UserName,则是当前shell下的用户

-r[UserName] :删除指定用户当前的时程表,则是当前shell下的用户

-l[UserName] :列出指定用户当前的时程表,则是当前shell下的用户

-v[UserName] :列出指定用户的cron作业状态,则是当前shell下的用户

3、时程表的格式说明

 F1    F2  F3  F4  F5   program
(分钟  小时 日   月  星期 作业命令)

例如:5 */1 * * * /usr/sbin/ntpdate cms是指在每小时的第5分钟执行/usr/sbin/ntpdate cms这个命令。

说明见下图:

4、样例

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

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

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

#每个月的4号和每个礼拜一到礼拜三的早上11点
0 11 4 * 1-3 date

#1月1日早上4点
0 4 1 1 * date

编写执行命令时要注意当前的环境变量。

5、与sleep配合实现秒级别的定时

如果你在终端直接执行:

sleep 3s;/bin/date

很明显的能看到,sleep可以延时执行命令,那么和crontab结合就实现了秒级别的定时,如下:

* * * * * sleep 10s; /bin/date >>/tmp/date.txt
* * * * * sleep 20s; /bin/date >>/tmp/date.txt
* * * * * sleep 30s; /bin/date >>/tmp/date.txt
* * * * * sleep 40s; /bin/date >>/tmp/date.txt
* * * * * sleep 50s; /bin/date >>/tmp/date.txt

这时候观察/temp/date.txt,就可看见每10秒有条时间记录。

当然,sleep时间单位也有分、时、天(m, h, d),本例中只使用了秒。

时间: 2024-08-05 11:11:56

linux下的“定时器”:crontab的相关文章

Linux下的定时器:alarm()与setitimer()

Linux下的定时器有两种,以下分别介绍: 1.alarm 如果不要求很精确的话,用alarm()和signal()就够了 unsigned int alarm(unsigned int seconds) 函数说明: alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程.如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回. 返回值: 返回之前闹钟的剩余秒数,如果之前未设闹钟则返回0. alarm()执行后,进程将继续执行,在后期(al

linux下jiffies定时器和hrtimer高精度定时器【转】

本文转载自:http://blog.csdn.net/dosculler/article/details/7932315 一.jiffies定时器,HZ=100,精度只能达到10ms. 注:采用jiffies+msecs_to_jiffies(xx ms);可做到ms级,不过精度不够 #include <Linux/jiffies.h>//DO-->jiffies调用头文件#include <linux/timer.h>  //DO-->timer_list结构体 st

Linux下的定时器

1.alarm()运行后,进程将继续运行.在后期(alarm以后)的运行过程中将会在seconds秒后收到信号SIGALRM并运行其处理函数. #include <stdio.h> #include <unistd.h> #include <signal.h> void sigalrm_fn(int sig) { printf("alarm!\n"); alarm(2); return; } int main(void) { signal(SIGAL

Linux下的定时任务Crontab

通过crontab -e写入定时任务的指令,一行为一项任务. 任务模式是时间克龙表达式+命令形式. 如: 2 0,6,12,18 * * * perl /root/restarttomcat.pl perl之前的部分依次为2分 0点6点12点18点 任意日 任意月 任意周 perl /root/restarttomcat.pl 合起来为命令 这条任务告诉系统在每天0:02 6:02 12:02和18:02 执行命令perl /root/restarttomcat.pl 通过VI书写完这个任务,然

Linux下实现定时器Timer的几种方法

http://blog.csdn.net/lxmky/article/details/7669296 第六章 IO复用:select和poll函数 http://www.cnblogs.com/4tian/archive/2012/08/08/2624353.html

Linux下设置定期执行脚本

下面针对的是非ubuntu环境,会在文章末尾介绍ubuntu的一些区别. 在Linux下,经常需要定期的执行一些脚本从而来实现一些功能. 在Linux下我们用crontab来实现定期的执行脚本这个功能,下面就介绍一下crontab的使用.以及我遇到的一些问题 一. crontab的使用说明 1. crond 是linux用来定期执行程序的命令.当安装完成操作系统之后,默认便会启动此任务调度命令.crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作.而linux任

linux下crond调度

编辑 /var/spool/cron/root文件 基本格式 :* * * * * command分 时 日 月 周 命令 1.每分钟执行一次 * * * * * 2.每隔一小时执行一次 0 * * * * or * */1 * * * (/表示频率) 3.每小时的15和30分各执行一次 15,45 * * * * (,表示并列) 4.在每天上午 8- 11时中间每小时 15 ,45分各执行一次 15,45 8-11 * * * command (-表示范围) 5.每个星期一的上午8点到11点的

Linux下crontab命令添加Kettle作业定时任务

1. 确保作业 $KETTLE_HOME/kitchen.sh -file=/data1/testdata/testkjb.kjb 或转换 $KETTLE_HOME/pan.sh -file=/data1/testdata/testktr.ktr 能在Linux下正常执行 此步骤在JDK配置正确,(Ps.可选择配置Kettle的环境变量,主要是定位程序所在主目录,不用每次引用绝对路径), 当前用户拥有对应*.sh文件有执行权限的情况下,很少有其它问题. 2.编写执行Kettle作业或转换的exe

linux 下使用crontab 定时打包日志并删除已被打包的日志

crontab是和用户相关的,每个用户有自己对应的crontab . cron是Linux下的定时执行工具,以下是重启/关闭等等的命令 #/sbin/service crond start //启动服务 #/sbin/service crond stop //关闭服务 #/sbin/service crond restart //重启服务 #/sbin/service crond reload //重新载入配置 #/sbin/service crond status //查看服务状态 cron服