Linux下的任务调度分两类,Linux系统计划任务之二:cron任务调度

系统在日常的运行当中,经常需要作一些周期的备份或检查工作。这种有规律的循环执行的工作任务,在Linux系统中是用crond系统服务来实现的。crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,它在CentOS系统上默认是打开的。[[email protected] ~]# chkconfig --list crond

crond  0:off1:off2:on3:on4:on5:on6:off

linux下的任务调度分为两类,分别为系统级任务调度和用户级任务高度。下面分别介绍。

1.系统级任务调度

Linux系统周期性执行的任务,比如说自动的进行在线更新 (on-line update)、自动的进行 updatedb更新文件名数据库等。这种工作调度可通过编辑全局配置文件/etc/crontab(这是一个纯文本文件,不要跟/usr/bin/crontab可执行文件混淆)来进行。该文件的内容如下:[[email protected] ~]# vim /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name command to be executed

该文件前四行是配置cron任务运行的环境变量信息。如下表:

7a0063463dc3e67774e6ba782ac758c8.png

文件中以#开头的内容是对任务的配置格式的具体说明。

任务的配置格式为:分 时 日 月 周 执行用户 执行指令内容 ,共7小节。

参数所代表的含义如下表所示:

af2820b375bef17f98f18307821d5229.png

第5列周几的数据0和7表示星期天。

前五列的值还可以含有一些辅助字符,如下表:

95249239f3b2df79a98748ad4ff35c17.png

第6列为执行用户。如这一列内容为空的话,将导致所配置的例行程序无法运行。

第7列为所要执行的指令。这有两种方法,一种是直接以指令形式下达,一种是linux系统中常用的指定某个存放某类脚本文件的目录的方式。

A.指令形式

如系统每5分钟记录一次内存余量情况,并写在文件中。

*/5  *  *  *  *  root  grep "^MemFree" /proc/meminfo >> /tmp/memory.log

B.指定目录方式

首写编写要执行的脚本并保存到某特定的目录中。如下,编辑文件

[[email protected] ~]# vim /tmp/cron/backupEtc.sh

#!/bin/bash

tar -Jcf /backup/etc_`date ‘+%F_%T‘`.tar.xz /etc/*

#保存后修改文件模式。注意,目录中的脚本文件必须具体可执行权限。否则,无法运行。

[[email protected] ~]# chmod a+x /tmp/cron/backupEtc

编辑/etc/crontab文件,添加如下内容

0  4  *  *  *  root  run-par ts /tmp/cron/

该行内容设定系统每天4点钟自动执行目录/tmp/cron下的所有脚本文件,包括上面自定义的自动备份/etc目录下文件的脚本。

在/etc目录下,系统已设置了cron.daily、cron.hourly、cron.monthly、cron.weekly目录信息。为管理的规范,也可将执行任务的脚本放在前4个相应的目录中。

2.用户级任务调度

用户如有周期性要执行的工作,比如给用户数据备份或维护人员定期检查服务器状态并邮件提醒等。用户可以使用crontab命令来定制自己的任务调度。

如用户zeng登录后,使用crontab –e指令编辑任务内容。

用户任务调度的配置格式同系统级任务调度全局性文件/etc/crontab的格式相同,只是无需指定第6列执行用户,具体说明见上一小节。输入如下内容并保存退出。

#该例子只用开测试

*/5 * * * * echo "now is:`date `" >> /tmp/userCron.log

每一个任务一行,可输入多个任务。该命令中所输入的内容会自动的保存到/var/spool/cron/zeng文件中。

[[email protected] ~]# cat /var/spool/cron/zeng

*/5 * * * * echo "now is:`date `" >> /tmp/userCron.log

用户级任务调度的编写内容与系统级调度内容相比较,只是少写了执行用户而以,其它相同。

Crontab的其它参数说明

-u:只有root能下达的参数,可指定所建立、查询或删除crontab信息的用户

-l:查看用户crontab的内容,默认是当前登录用户

-e:编辑crontab文件的内容

-r:删除crontab文件的内容

如查询用户的任务调度作业[[email protected] ~]#crontab -u zeng -l

#显示内容

*/2 * * * * echo"now is:`date ‘+\%F \%T‘ `" >> /tmp/userCron.log

原文:http://kinzen.blog.51cto.com/11233280/1791577

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值