首页 > 代码库 > 六、任务计划管理cron
六、任务计划管理cron
6.1、一次任务计划at/batch
at:定时运行命令
作用:at命令再指定时刻执行指定的命令序列
用法:at [-V][-q 队列][-f file][-m] time
常用选项: -V:输出版本号 -q:选用-q参数则可选队列名称,队列名称可以是a-z和A-Z之间的字母,队列字母顺序越高,队列优先级越高。 -f:从文件中读取命令或者shell脚本,而非在提示后指定他们。 -m:执行完作业后发送邮件给用户 time:指定作业执行时间 |
[root@mylinux home]# at -f date 12:20 #12:20执行date文件中的命令 job 6 at 2017-04-22 12:20 [root@mylinux home]# cat date #date文件中的命令 ls -l date [root@mylinux home]# date 2017年 04月 22日 星期六 12:20:19 CST You have new mail in /var/spool/mail/root [root@mylinux home]# mail Heirloom Mail version 12.4 7/29/08. Type ? for help. "/var/spool/mail/root": 12 messages 2 new 6 unread 1 Cron Daemon Mon Jul 18 23:00 23/961 "Cron <root@myli" 2 Cron Daemon Tue Jul 19 01:00 23/961 "Cron <root@myli" 3 Cron Daemon Tue Jul 19 01:20 23/961 "Cron <root@myli" 4 Cron Daemon Sat Aug 27 21:40 23/857 "Cron <root@myli" 5 Cron Daemon Sat Aug 27 22:00 23/857 "Cron <root@myli" 6 Cron Daemon Sat Aug 27 22:20 23/857 "Cron <root@myli" U 7 Cron Daemon Sat Aug 27 22:40 23/856 "Cron <root@myli" U 8 Cron Daemon Sat Aug 27 23:00 23/856 "Cron <root@myli" U 9 Cron Daemon Sun Jan 1 08:00 23/858 "Cron <root@myli" U 10 Cron Daemon Sat Apr 15 17:00 23/961 "Cron <root@myli" >N 11 root Sat Apr 22 12:20 21/877 "Output from you" N 12 root Sat Apr 22 12:22 21/877 "Output from you" & 11 Message 11: #邮件中的内容为定时任务执行过后的输出 From root@mylinux.localdomain Sat Apr 22 12:20:01 2017 Return-Path: <root@mylinux.localdomain> X-Original-To: root Delivered-To: root@mylinux.localdomain Subject: Output from your job 5 To: root@mylinux.localdomain Date: Sat, 22 Apr 2017 12:20:01 +0800 (CST) From: root@mylinux.localdomain (root) Status: R 总用量 261004 -rw-r--r-- 1 root root 11 4月 22 12:17 date -rw-r--r-- 1 root root 266980208 4月 19 13:59 dow.zip drwxr-xr-x 3 root root 4096 2月 21 19:11 python_web drw-r--r-x 2 500 500 4096 4月 29 2016 samba drwxr-xr-x 2 root root 4096 9月 3 2016 shell drwxr-xr-x 11 root root 4096 3月 24 16:40 wswp-code 2017年 04月 22日 星期六 12:20:00 CST --More--
atq:显示目前使用at命令后执行的命令队列
作用:使用atq命令查询已经设定的命令序列。
常用选项: -V:输出版本号 -q:选用-q参数则可选队列名称,队列名称可以是a-z和A-Z之间的字母,队列字母顺序越高,队列优先级越高。 |
[root@mylinux home]# atq 4 2017-04-22 15:30 a root 7 2017-04-22 12:30 a root
atrm:删除at命令中执行的命令
作用:atrm命令可以删除at命令中待执行的命令队列
[root@mylinux home]# atrm 4 #删除4号任务 [root@mylinux home]# atrm 7 #删除7好任务 [root@mylinux home]# atq
batch:在系统负载水平允许的条件下执行命令
用法:batch [-V][-q 队列][-f file][-mv] [time]
常用选项: -V:输出版本号 -q:选用-q参数则可选队列名称,队列名称可以是a-z和A-Z之间的字母,队列字母顺序越高,队列优先级越高。 -f:从文件中读取命令或者shell脚本,而非在提示后指定他们。 -m:执行完作业后发送邮件给用户 -v:显示作业要执行的事件 |
命令控制列表: /etc/at.deny /etc/at.allow
这两个文件可以限制对at和batch命令的使用,用法都是每行一个用户。两个文件都不允许使用空白字符。当控制文件修改时,at守护进程不必重启。每次用户尝试执行at和batch时,控制列表都会被读取,当然root用户总是可以执行at和batch命令。如果at.allow文件存在,只有其中列出的用户才能使用at或batch命令,at.deny文件会被忽略;如果at.allow文件不存在,所有在at.deny文件中列出的用户都将禁止使用at和batch命令。
6.2、周期任务计划 crontab/anacron
可以使用crontab将系统设定在每天、每周和每月的某个时刻自动运行某个命令或者应用程序,实现系统资源的循环定时调用。crontab仅仅是一个文本文件,可以使用任何UNIX编辑器进行编辑。其包含四种代码行:空行、注释、环境变量和命令。
cron预设的5个环境变量: PATH默认是/usr/bin:/bin SHELL预设值:/bin/sh LOGNAME初始化为crontab所有者用户名 HOME设置为crontab所有者的目录,如/home/joe MAILTO设置为crontab所有者的名称 |
cron守护进程是一个由实用程序和配置文件组成的小型子系统。cron的组件包括守护进程本身;一组系统范围的配置文件;一组针对特定用户的配置文件;一个用来添加、删除用户配置文件的实用程序;以及一个简单的访问控制列表。一般来说cron配置文件或者cron作业列表成为crontab或cron时间表。
可以在这些位置定义与系统相关的作业: cron.d/ cron.deny cron.monthly/ cron.weekly/ cron.daily/ cron.hourly/ crontab |
cron守护进程连续运行,每分钟检查一次配置文件的修改,cron读取系列范围和针对用户的crontab的调度计划并执行这一分钟内应该执行的所有命令。这个守护进程还不或每个作业的输出,并通过电子邮件发送给作业的所有者。
crontab命令的使用
crontab
-l: 列出当前用户的所有cron任务 -e: 执行文字编辑器来设置时程表 -r: 移除所有任务 -u USERNAME: 管理其用户的cron任务(root使用) -i:同-r一同使用,以交互式模式让用户有选择地移除指定任务 |
系统任务配置文件:/etc/crontab
f1 f2 f3 f4 f5 user-name command #f1表示分钟,f2表示小时,f3表示一个月份中的第几天,f4表示月份,f5表示一个星期中的第几天 #user-name执行该任务的用户,command表示要执行的程序
用户任务配置文件:/var/spool/cron/USERNAME
f1 f2 f3 f4 f5 command #f1表示分钟,f2表示小时,f3表示一个月份中的第几天,f4表示月份,f5表示一个星期中的第几天 #command表示要执行的程序 时间通配表示: *: 对应时间的所有有效取值 1,2,5: 离散时间点: 12-23:连续时间点: /#:对应取值范围内每隔#执行一次,如/20
0 * * * * /bin/ls #每小时的第0分钟执行一次/bin/ls 2 0/20 6-12 * 12 * /usr/bin/backup #在12月,每天早上6-12点,每隔20分钟执行一次/usr/bin/backup
常用调度计划的简写形式: @reboot 每当计算机重新引导时运行命令 @daily 每天一次的简写形式 @weekly 每周一次的简写形式 @annually 每年一次的简写形式,也可以@yearly @midnight 在每天午夜运行命令,相当于@daily |
anacron命令
anacron和cron相似的任务调度器,只不过他不要求系统持续运行。anacron能够实现让cron因为各种原因在过去的时间该执行而未执 行的任务再恢复正常执行一次。
anacron任务被列在配置文件/etc/anacrontab 中,文件的每一行代表一项任务;格式为:
period delay job-identifier command #period:命令执行的频率(天数) #delay:延迟时间(分钟) #job-identifier:人物的描述,用在anacron的消息中,并为作业时间戳文件的名名称,不能包含非空格符 #command:要执行的命令
对于每项任务,anacron先判定该任务是否在配置文件的period字段中指定的期间内被执行了。如果没有执行,那么anacron会等待delay字段中指定的分钟数,然后执行命令。
任务完成后anacron在/var/spool/anacron目录内的时间戳文件中记录日期,只有日期被记录(无时间),而且job-indentifier的值被用作时间戳文件的名称。
本文出自 “随风而飘” 博客,请务必保留此出处http://yinsuifeng.blog.51cto.com/10173491/1918444
六、任务计划管理cron