设为首页 加入收藏

TOP

Linux 定时任务详解(四)
2017-10-16 18:20:40 】 浏览:11478
Tags:Linux 定时 任务 详解
者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
餐数 : 
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe) 

-r : 删除目前的时程表
-l : 列出目前的时程表
时程表的格式如下 : 
f1 f2 f3 f4 f5 program 
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推

使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。 例子 : 
每月每天每小时的第 0 分钟执行一次 /bin/ls : 

0    7    *    *    *    /bin/ls 

在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup : 

0  6-12/3  *  12  *  /usr/bin/backup 

周一到周五每天下午 5:00 寄一封信给 alex@domain.name : 

0  17  *  *  1-5  mail -s "hi" alex@domain.name   /dev/null 2>&1

 即可

例:如果用户的Crontab文件的内容是:29 19 * * * echo its dinner time,则系统每天的19:29显示‘its dinner time’
示例(创建一个cron全过程,每分钟都会在test.txt里输入当前时间): 
1.     以普通用户登录linux系统(我用的是CentOS4.1) 
2.     $crontab –e
说明:系统默认的编辑器是VIM,如果不是请加上以下shell:
$EDITOR=vi
$export EDITOR 
3.     输入”*/1 * * * * date >> $HOME/test.txt”,save and exit VIM 
4.     $su root 
5.     $cd /etc/init.d 
6.     ./crond restart 

下面看看看几个具体的例子:

复制代码
0   */2  *    *   *   /sbin/service httpd restart   意思是每两个小时重启一次apache 
50  7    *    *   *   /sbin/service sshd start   意思是每天7:50开启ssh服务
50  22   *    *   *   /sbin/service sshd stop   意思是每天22:50关闭ssh服务
0   0    1,15  *   *   fsck /home   每月1号和15号检查/home 磁盘
1   *    *    *   *   /home/bruce/backup   每小时的第一分执行 /home/bruce/backup这个文件
00  03   *    *  1-5  find /home "*.xxx" -mtime +4 -exec rm {} \;   每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
30  6    */10  *   *   ls   意思是每月的1、11、21、31日是的6:30执行一次ls命令
复制代码

 

linux平台上如果需要实现任务调度功能可以编写cron脚本来实现。

以某一频率执行任务

linux缺省会启动crond进程,crond进程不需要用户启动、关闭。
crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。
cron的调度文件有以下几个:

1.   crontab 

2.   cron.d 

3.   cron.daily 

4.   cron.hourly 

5.   cron.monthly 

6.   cron.weekly 

如果用的任务不是以hourly monthly weekly方式执行,则可以将相应的crontab写入到crontab 或cron.d目录中。

示例:
每隔一分钟执行一次脚本 /opt/bin/test-cron.sh 
可以在cron.d新建脚本 echo-date.sh 
内容为

*/1  *  *  *  *  root /opt/bin/test-cron.sh

 

在指定的时间运行任务

也可以通过at命令来控制在指定的时间运行任务

如:

at -f test-cron.sh -v 10:25 
其中-f 指定脚本文件, -v 指定运行时间

quote:ea946d690b="lophyxp"]首先用
contab -l >contabs.tmp
导出contab的配置。
然后编辑contabs.tmp文件。以一下格式添加一行:
分钟 小时 天 月 星期 命令
比如
10 3 * * 0,6 hello
就是每周六、周日的3点10分执行hello程序。
15 4 * * 4-6 hello
就是从周四到周六的4点15点执行hello程序。
然后用
contab contabs.tmp
命令导入新的配置。
一般不建议直接修改/etc/下的相关配置文件。

启动cron进程的方法:/etc/init.d/crond start
开机就启动cron进程的设置命令:chkconfig --add crond

方法二:

把cron加入到启动脚本中:

# rc-update add vixie-cron default

c

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 4/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇DNS—正、反向解析;委派;主从;.. 下一篇平稳切换nginx版本

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目