码迷,mamicode.com
首页 > 其他好文 > 详细

2015年9月5日课程作业(at、crontab)

时间:2015-09-08 20:22:39      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:linux   用户   课程   计划   

1、总结Linux系统上的任务计划(at、crontab)的详细使用方法;


指令:at
定时任务,指定一个时间执行一个任务,只能执行一次。

语法:# at [参数] [时间]
at> 执行的指令
退出at命令 ctrl+d

命令前提:
需要开启atd进程(在redhat中atd是默认随系统启动而启动)

[root@localhost ~]# ps -ef|grep atd        #查看是否开启atd
root      1360     1  0 9月02 ?       00:00:00 /usr/sbin/atd -f
root     17626 17581  0 10:02 pts/0    00:00:00 grep --color=auto atd
[root@localhost ~]#
查询删除当前待执行任务
查询当前的等待任务,被执行之后就不会显示
# atq

删除系统中由at建立的正在等待被执行的任务
# atrm 任务的工作号
例如:# atrm 17

常见参数:
-m :当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
-I :atq的别名
-d :atrm的别名
-v :显示任务将被执行的时间
-c :打印任务的内容到标准输出
-V :显示版本信息
-q :后面加<列队> 使用指定的列队
-f :后面加<文件> 从指定文件读入任务而不是从标准输入读入
-t :后面<时间参数> 以时间参数的形式提交要运行的任务

时间:定义出什么时候要进行at的任务,格式有:
1、HH:MM
说明:在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行此任务。
ex> 04:00

2、HH:MM YYYY-MM-DD
说明:规定在某年某月的某一天的特殊时刻进行该项任务
ex> 04:00 2009-03-17

3、HH:MM[am|pm] [Month] [Date]
说明:规定在某年某月某日的某时刻进行该项任务
ex> 04pm March 17

4、HH:MM[am|pm] + number [minutes|hours|days|weeks]
说明:规定在某个时间点再加多少时间后才进行该项任务
ex> now + 5 minutes
ex> 04pm + 3 days

注意事项
1、如果at的指令输出的路径有误 则会把结果以邮件的形式发送给用户
2、当一个任务创建了会被分配到一个任务号,而且会在/var/spool/at里面排队。不建议使用vi编辑器去修改,容易出错。

例子:
实例1:三天后的下午 5 点锺执行 /bin/ls
# at 5pm + 3 days
at> /bin/ls
at> <EOT>
job 7 at 2013-01-08 17:00

实例2:明天17点钟,输出时间到指定文件内
# at 17:20 tomorrow
at> date > /root/doiido.log
at> <EOT>
job 8 at 2013-01-06 17:20

实例3:计划任务设定后,在没有执行之前用atq命令来查看系统没有执行工作任务
# atq
8 2013-01-06 17:20 a root
7 2013-01-08 17:00 a root

实例4:删除已经设置的任务
# atq
8 2013-01-06 17:20 a root
7 2013-01-08 17:00 a root
# atrm 7
# atq
8 2013-01-06 17:20 a root

实例5:显示已经设置的任务内容
# at -c 8
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
echo "hello"
date > doiido.log

扩展指令batch
batch为,at命令的特殊版本,在执行的任务会占用大量资源的时候用,只在cpu需求低于cpu能力80%的时候使用
# batch
at> echo "hi" > /dev/tty2
batch创建的任务也是通过atq查看,atrm删除     	


Linux crontab定时执行任务 命令格式与详细例子。

基本格式:

     # Example of job definition:
     # .---------------- minute (0 - 59)
     # |  .------------- hour (0 - 23)
     # |  |  .---------- day of month (1 - 31)
     # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
     # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
     # |  |  |  |  |
     # *  *  *  *  *  command to be executed 


*    *    *    *    *    command

分    时    日    月    周    命令


第1列表示分钟1~59每分钟用*或者*/1表示

第2列表示小时1~23(0表示0点)

第3列表示日期1~31

第4列表示月份1~12

第5列标识号星期0~6(0表示星期天)

第6列表示要运行的命令


crontab文件的一些例子:

30 21 * * *     /etc/init.d/httpd restart

上面的例子表示每晚的21:30重启apache


45 4 1,10,22 * * /etc/init.d/httpd restart

上面的例子表示每月1、10、22日的4:45重启apache


10 1 * * 6,0 /etc/init.d/httpd restart

上面的例子表示每周六、周日的1:10重启apache


0,30 18-23 * * * /etc/init.d/httpd restart

上面的例子表示在每天18:00至23:00之间每隔30分钟重启apache


0 23 * * 6 /etc/init.d/httpd restart

上面的例子表示每星期六的23:00重启apache


* */1 * * * /etc/init.d/httpd restart

每一小时重启apache


* 23-7/1 * * * /etc/init.d/httpd restart

晚上11点到早上7点之间,每隔一小时重启apache


0 11 4 * mon-wed /etc/init.d/httpd restart

每月的4号与每周一到周三的11点重启apache


0 4 1 jan * /etc/init.d/httpd restart

一月一号的4点重启apache



crontab使用方式:

参数:

crontab -e:执行文字编辑器来设定里程表,内定的文字编辑器是vi,如果你想用别的文字编辑器,则请先设定VISUAL环境变量来指定使用那个文字编辑器(比如说 setnv VISUAL joe)

crontab -r:删除目前的时程表

crontab -l:列出目前的时程表

crontab file [ -u user ] - 用指定的文件替代目前的crontab.

时程表的格式如下:

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的方式来设定时程表.

例子:

每天早上7点执行一次/bin/ls:

0 7 * * * /bin/ls


在12月内,每天的早上6点到12点中,每隔3个小时执行一次/usr/bin/backup:

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


2、每周一到周六的凌晨3点20分,运行cp命令对/etc/目录进行归档另存,存储位置为/backups/etc-YYYY-MM-DD;

20 3 * * 1-6 /usr/bin/cp -r /etc/ /backups/etc-`date + %F`

3、每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss;

30 2 * * 0  /usr/bin/cp -r /etc/fstab /backup/fstab-`date +%F-%H-%M-%S`

4、每天晚上12点,取得/proc/meminfo文件中所有以S或M开头的行,追加至/statistics/meminfo.txt文件中,且每天的消息之前,要加上类似===============分隔线;

0 0 * * * /bin/echo "===============" >> /statistics/meminfo.txt ; /bin/cat /proc/meminfo | egrep "^S|^M" >> /statistics/meminfo.txt


本文出自 “啊杜” 博客,请务必保留此出处http://253737.blog.51cto.com/243737/1692854

2015年9月5日课程作业(at、crontab)

标签:linux   用户   课程   计划   

原文地址:http://253737.blog.51cto.com/243737/1692854

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!