一、计划任务 crond服务简介
linux任务调度的工作主要分为以下两类:
*系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
*个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。
这个时候可以用cron来帮助系统进行任务调度。cron可以根据时间、日期、月份、星期的组合来调度对重复任务的执行的守护进程。
crond服务通过shell和Linux/Unix下的crontab(计划任务控制)的方式实现。cron是计划任务的称呼,crond是后台进程,而crontab则是定制好的计划任务表。cron 这个名字来自 “chronos”,一个古希腊语“时间”的意思。crond进程每分种会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
要使用 crond服务,你必须安装了vixie-cron RPM 软件包,而且必须在运行crond服务。要判定该软件包是否已安装,使用rpm -q vixie-cron命令。要判定该服务是否在运行,使用 /sbin/service crond status 命令。
crond服务是linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
你也可以让这个服务在系统启动的时候自动启动,只需要在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
2.2 crond服务的使用
crond服务提供crontab命令来设定crond服务,以下是这个命令的一些参数与说明:
crontab -u //设定某个用户的cron服务,一般这个参数只允许root使用
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除某个用户的cron服务
注意:如果有多条计划任务crontab -r会删除用户所有的计划,如果你只想删除其中一条计划任务,请使用crontab -e 命令或者直接编辑/var/spool/cron/root文件。
crontab -e //编辑某个用户的cron服务
现举例说明:
# crontab -u root –l //root查看自己的cron设置
# crontab -u fred –r // root想删除fred的cron设置
# crontab -u root –e //编辑root的crontab文件
crontab -e命令编辑的是/var/spool/cron下对应用户的cron文件
我们也可以直接修改/etc/crontab文件,crontab文件有自己的格式,具体如下:
Minute Hour Day Month Dayofweek command
分钟 小时 天 月 天每星期 命令
每个字段代表的含义如下:
Minute 每个小时的第几分钟执行该任务
Hour 每天的第几个小时执行该任务
Day 每月的第几天执行该任务
Month 每年的第几个月执行该任务
DayOfWeek 每周的第几天执行该任务
Command 指定要执行的程序
举例如下:
5 * * * * ls //指定每小时的第5分钟执行一次ls命令
30 5 * * * ls //指定每天的 5:30 执行ls命令
30 7 8 * * ls //指定每月8号的7:30分执行ls命令
30 5 8 6 * ls //指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls //指定每星期日的6:30执行ls命令
注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等
30 3 10,20 * * ls //每月10号及20号的3:30执行ls命令
注:“,”用来连接多个不连续的时段
25 8-11 * * * ls //每天8-11点的第25分钟执行ls命令
注:“-”用来连接连续的时段
*/15 * * * * ls //每15分钟执行一次ls命令(即每个小时的第0 15 30 45 60分钟执行ls命令)
30 6 */10 * * ls //每个月中,每隔10天6:30执行一次ls命令(即每月的1、11、21、31日是的6:30执行一次ls命令)
50 7 * * * root run-parts /etc/cron.daily //每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行脚本
注:run-parts参数表示,执行后面目录中的所有可执行文件,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了
30 5 * * * ls >/jp/test 2>&1 //每天5:30执行ls命令,并把结果输出到/jp/test文件中
注:2>&1 表示执行结果及错误信息
记住几个特殊符号的含义:
"*"代表取值范围内的数字,
"/"代表"每",
"-"代表从某个数字到某个数字,
","分开几个离散的数字
chkconfig --list crond 查询crond服务的运行级信息
chkconfig --level 2345 crond 设置crond服务的运行级信息
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
文件在 /etc/inittab