在linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如定期备份数据、定期开启服务等)。
RedHat 6.5系统中的计划任务是由at、crontab命令进行计划任务的设置,其中at命令为一次性计划任务,crontab命令是周期性的计划任务。
(1) at命令(一次性的执行任务)
使用at命令设置的计划任务只在指定的时间点执行一次,前提是需要开启atd系统服务,需要设置计划任务的时间、日期必须在当前系统的时间之后,否则将无法正确设置计划任务。
设置一次性计划任务时,在at命令行中一次指定计划执行任务的时间、日期作为参数(若只指定时间则表示当天的时间,若只指定日期则表示该日期的当前时间),确认后将进入带“at>”提示符的任务编辑界面,每行设置一条执行命令,可以依次设置多条语句,最后按Ctrl+D组合键提交任务即可。
示例:计划明天22:00时自动关闭当前系统
对于已经设置计划任务但是并未执行的计划任务,可以通过atq命令进行查询
若要删除at任务,可以使用atrm命令,删除后的at任务将不会被执行,并且不会显示在atq命令的显示结果中
(2) crontab命令(周期性重复执行任务)
使用crontab命令设置的计划任务可以按预设的周期重复执行,可以大大减轻设置重复性系统管理任务的操作,由软件包cronie提供crontab工具、系统服务crond和配置文件/etc/crontab.
crotab命令常用选项如下:
-e:编辑计划任务列表
-u:指定所管理的计划任务属于哪个用户,默认时针对当前用户,一般只有root用户有权限使用此选项(用于编辑、删除其他用户的计划任务)
-l:列表显示计划任务
-r:删除计划任务列表
每一行仍无配置记录都包括六个数据字段,分别表示不同的含义,每个字段必须定义,如下图
其中前五个数据字段可以使用下列符号表示
星号“*”:表示取值范围中的任意时间
减号“-”:表示一个连续的时间范围
逗号“,”:表示一个间隔的不连续范围
示例:每天0:00使用tar命令自动备份/etc/httpd目录
查看当前用户的计划任务列表
删除当前用户的计划任务列表
删除某一条计划任务时,可以通过crontab –e进行编辑;若要清空当前用户的所有计划任务时,执行crontab –r命令
注意事项:
定时任务(一般指脚本任务)规则的结尾最好加上“>/dev/null 2>&1”,即不输出任何信息,若不加,时间长了,会产生大量文件占用大量磁盘inode节点,以至于磁盘inode满而无法写入正常数据。
原文地址:http://blog.51cto.com/10316297/2103708