UNIX下怎样实现和Windows计划任务一样的功能
$crontab -e 编辑脚本
$crontab -l 察看脚本 
$crontab -e 编辑脚本,加入下列行
:分 小时 星期 命令 
Linuxcrontab命令的用法
任务调度的crond常驻命令
crond linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
3CrontabUNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中: 文件含义
/
etc/cron.deny 该文件中所列的用户不允许使用Crontab命令
/etc/cron.allow 该文件中所列的用户允许使用Crontab命令
/var/spool/cron/ 是所有用户的crontab文件
/var/spool/cron/crontabs

4Crontab命令的格式为:crontab –l|-r|-e|-i [username]
其参数含义如表一: 参数名称  含义    示例
-l 显示用户的Crontab文件的内容
crontabl –l

-i 删除用户的Crontab文件前给提示
crontabl -ri

-r
Crontab目录中删除用户的Crontab文件


crontabl -r
-e

编辑用户的Crontab文件
crontabl -e

5、用户所建立的Crontab文件存于/var/spool/cron中,其文件名与用户名一致。它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段,格式如下:* * * * *
其时间段的含义如表二:         含义        取值范围
第一段  代表分钟        0—59
第二段  代表小时        0—23
第三段  代表日期        1—31
第四段  代表月份        1—12
第五段  代表星期几  0代表星期日
名称 : crontab
使用权限 : 所有使用者
使用方式 :
crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }
说明 :
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-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 * 时表示每分钟都要执行 programf2 * 时表示每小时都要执行程序,其馀类推
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全过程,每分钟都会在里输入当前时间):


1.    以普通用户登录linux系统(我用的是CentOS4.1)
2.    $crontab –e
说明:系统默认的编辑器是VIM,如果不是请加上以下shell:
$EDITOR=vi
$export EDITOR
3.    输入*/1 * * * * date >> $,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  意思是每天750开启ssh服务


50 22 * * * /sbin/service sshd stop  意思是每天2250关闭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  意思是每月的1112131日是的630执行一次ls命令
linux平台上如果需要实现任务调度功能可以编写cron脚本来实现。
以某一频率执行任务
linux缺省会启动crond进程,crond进程不需要用户启动、关闭。
crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。
cron的调度文件有以下几个:
1. crontab
2. cron.d
3. cron.daily
4. cron.hourly
5. hly
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 &p
导出contab的配置。
然后编辑p文件。以一下格式添加一行:
分钟 小时 星期 命令
比如
10 3 * * 0,6 hello
就是每周六、周日的310分执行hello程序。
15 4 * * 4-6 hello
就是从周四到周六的415点执行hello程序。
然后用
p
命令导入新的配置。
一般不建议直接修改/etc/下的相关配置文件。
启动cron进程的方法/etc/init.d/crond start
开机就启动cron进程的设置命令:chkconfig --add crond
方法二:
cron加入到启动脚本中:
# rc-update add vixie-cron default
crontab -l #查看你的任务
crontab-e#编辑你的任务
crontab-r#删除用户的crontab的内容
实例讲解二:
系统cron设定:/etc/crontab
    通过 /etc/crontab 文件,可以设定系统定期执行的任务,当然,要想编辑这个文件,得有root权限
0 7  *    *  *    root    mpg123 ~/wakeup.mp3
示例:
0 4 * * 0    root emerge --sync && emerge -uD world              #每周日凌晨4点,更新系统
0 2 1 * *    root  rm -f /tmp/*                                                    #每月linux系统vim编辑器1号凌晨2点,清理/tmp下的文件
0 8 6 5 *  root    mail robin < /home/            #每年56日给robin发信祝他生日快乐
假如,我想每隔2分钟就要执行某个命令,或者我想在每天的6点、12点、18点执行命令,诸如此类的周期,可以通过 / , 来设置:
*/2  *  *  *  *          root      ...............      #每两分钟就执行........
0 6,12,18  *  *  *    root      ...............      #每天6点、12点、18点执行........
每两个小时
0 */2 * * * echo "have a break now." >> /
晚上11点到早上8点之间每两个小时,早上八点
0 23-7/28 * * * echo "have a good dream:)" >> /
每个月的4号与每个礼拜的礼拜一到礼拜三的早上11
0 11 4 * 1-3 command line
11日早上4
0 4 1 1 * command line
收获:可以把经常要做的一些事放到其中,简化工作量,如每周一检查服务器的运行状态,查看报告,杀掉一些进程等等……

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。