Linux 工作调度的种类: at, cron
at:是个可以处理仅执行一次就结束的调度的命令
crontab:这个命令所设置的工作将会循环一直进行下去
Linux 常见的例行任务:
- 进行日志文件的轮替(log rotate)
- 日志文件分析 logwatch 任务
- 新建 locate 的数据库
- whatis 数据库的建立
- RPM 软件日志文件的新建
- 删除临时文件
- 与网络服务有关的分析行为
仅执行一次的工作调度:
/etc/init.d/atd restart // 重启
chkconfig atd on //设置为开机启动
at 的运行方式:
我们使用 at 这个命令生成所要运行的工作,并将这个工作以文本文件的方式写入 /var/spool/at/ 目录内,
该工作就能等待 atd 这个服务的取用和执行了。
可以通过 /etc/at.allow 和 /etc/at.deny 来进行 at 使用的限制
先查看 /etc/at.allow ,再查看 /etc/at.deny ,如果都没有,那么只有 root 才有权限
at 语法 :
at [-mldv] TIME
at -c 工作号码
-m:当 at 的工作完成后,及时没有输出信息,也以email通知用户该任务已经完成
-l: at -l 相当于 atq,列出目前系统上面的所有该用户的 at 调度
-d: at -d 相当于 atrm ,可以取消一个在at中的工作
-v:可以使用较明显的时间格式列出 at 调度中的任务列表
-c:可以列出后面接的该项工作的实际命令内容
TIME 时间格式:
HH:MM
HH:MM YYYY-MM-DD
now + 5 minutes
crontab
/etc/cron.allow //优先级比 cron.deny 高
/etc/cron.deny
当用户使用 crontab 命令创建工作调度后,该工作会被写入 /var/spool/cron/
里面,而且以账号作为判别,不要直接用vi编辑这个文件
crontab 执行的每一项都会被记录到 /var/log/cron 中
语法:
crontab [-u username] [-ler]
-u:只有root 才能进行这项任务,即帮助其他用户新建/删除crontab
-e:编辑crontab
-l:查看
-r:删除所有的crontab内容
* * * * * date>/data/test.log
分 时 日 月 周(0-7) 命令 // 0或7都代表星期日
* 表示任意时刻都接受
,分隔时段的意思,如要执行的工作是 3:00,6:00 就会设置成
0 3,6 * * *
- 代表一段时间范围内,8点到12点之间的每小时20分
20 8-12 * * *
/n(斜线) 每隔 n 单位间隔的意思,每5分钟一次,则
*/5 * * * *
系统配置文件:/etc/crontab
crontab -e 是针对用户的cron来设计的,如果是系统的例行任务,需要编辑 /etc/crontab 这个文件。
crontab -e 这个 crontab 其实是 /usr/bin/crontab 这个执行文件,
但是 /etc/crontab 可是个"纯文本文件",你可以以root身份编辑
cron 这个服务最低检测限制是分钟,所以会每分钟去读一次/etc/crontab与/var/spool/cron里面的内容
/etc/init.d/crond restart // 重启 crond 服务
/etc/crontab
01 * * * * root run-parts /etc/cron.hourly 每小时
由于centos 提供 run-parts 这个script 的辅助,因此/etc/crontab
这个文件里面支持2种执行命令方式:
1.命令方式:
* * * * * 用户名 命令
2.目录规划
* * * * * 用户名 run-parts /root/runcron
注意:系统资源分配问题,错开执行 crontab 的时间,避免系统在同一时间执行太多
anacron:处理非24小时的任务