计划任务
在Linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如定期备份、定期采集系统检测数据等)。通过调度安排,指定任务运行的时间或者场合,到时系统会自动完成这一切工作,该过程我们称之为计划任务。通常Linux系统默认的安装了相应的软件包,通过atd和crond这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、crontab命令进行计划任务的设置。
计划任务概述
定时作业管理 —at作业
at命令使用方法
at –l #显示所提交的作业
清楚作业
at –r Id #清除作业
at使用权限控制
etc/at.allow和/etc/at.deny文件:如果/etc/at.allow文件存在的话,那么只有在其中列出的用户才可以使用at命令;如果该文件不存在,那么将检查/etc/at.deny文件是否存在,在这个文件中列出的用户均不能使用该命令。如果两个文件都不存在,那么只有超级用户可以使用该命令;空的/etc/at.deny文件意味着所有的用户都可以使用该命令,这也是默认状态。
Cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业,对应该进程的Crontab命令允许用户提交、编辑或删除相应的作业,每个用户都可以有一个Crontab文件来保存调度信息。
crontab调度详解
crontab文件的内容是需要执行的命令和时间,该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下:
分时日月星期要运行的命令
分一小时中的哪一分钟,取值范围0~59
时一天中的哪个小时,取值范围0~23
日一月中的哪一天,取值范围1~31
月一年中的哪一月,取值范围1~12
星期一周中的哪一天,取值范围0~6,0表示星期天
crontab调度详解
1、书写注意事项
书写crontab文件中的命令条目时,需要注意以下事项:
(1)每个域均不能为空,必须填入,如果遇到不知道的值使用通配符“*”表示;
(2)每个时间段均可以指定多个值,不连续的用“,”间隔,连续的使用“-”间隔
(3)命令部分应该给出绝对路径,避免路径问题出现错误
(4)用户必须具有运行所对应的命令或程序的权限
crontab调度详解
2、crontab条目示例
根据crontab命令格式及书写注意事项,给出以下示例供学习。
(1)每晚21:30重启apache服务
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
(2)每周一,三,五的下午3:00重新启动系统
00 15 * * 1,3,5 shutdown -r
(3)每小时的10分,40分将/home/jacky目录下的messagefile文件广播给所有用户
10,40 * * * * /usr/bin/wall
(4)每小时的1分执行用户目录下的bin/account这个指令:
1 * * * * bin/account
(5)每年的3月和6月,2号到8号的7点20分和7点50分执行/bin/date这个指令,并把结果添加在backlog.txt这个文件之后
20,50 7 2-8 3,6 * /bin/date >>backlog.txt
crontab调度详解
crontab命令用于生成、编辑、显示或删除cron进程所需要的crontab作业,一个 cron 作业是一个命令,其运行是由cron守护程序在规则的调度间隔执行的。其命令格式如下:
crontab [ -e [UserName] | -l [UserName] | -r [UserName] | -u [UserName]| File ]
各参数选项的作用如下:
-e使用编辑器编辑当前的crontab文件;
-l显示crontab文件的内容;
-r删除crontab文件;
-u指定用户名。
crontab命令使用方法
创建crontab文件
方法一
首先利用vi创建cron作业列表文件,文件命名为cronfile1 (这个文件名随意起)
按规定格式创建好任务文件
用命令行crontab cronfile1把它写入“/var/spool/cron/username”文件中
方法二
用crontab –e就会自动进入vi编辑器中
按规定格式编辑好任务:wq退出就保存为“/var/spool/cron/username”文件
提交创建好的crontab文件
crontab jackycron
该文件已经提交给cron进