Linux 定时任务

简介:

介绍

本篇主要介绍Linux定时任务命令crontab的用法,crontab是定时任务的命令,而crond则是定时任务的启动服务。crontab的定时任务分为系统任务和用户任务,其实二者没有太大的区别。

 

 

安装

在centos中crond默认是安装好的,如果没有安装的话执行以下操作

 

复制代码
安装crond
yum -y install vixie-cron
yum -y install crontabs

加入开启启动服务
chkconfig crond on
复制代码

启动 

在Centos中crond服务默认是自动启动的,如果没有启动可以手动启动,具体方法如下。

复制代码
查看定时任务是否启动
service crond status

将定时任务加入系统自动启动服务
chkconfig crond on

启动定时任务服务
service crond start
复制代码

 

系统任务调度

系统定时任务一般用来执行一些系统方面的操作,比如日志清理;系统的定时任务可以通过编辑/etc/crontab来设定。
  • SHELL:系统要使用哪个shell

  • PATH:系统定时任务执行的命令的路径,不要把这个PATH和系统环境变量认为是一样,二者没有关系,在系统环境变量里面配置的路径在这里不能生效。

  • MAILTO:用来接收邮件的用户,默认是root,邮箱的内容会保存在"/var/spool/mail/root"文件中。

  • HOME:系统定时任务的家目录。

  注意:系统定时任务在命令前必须指定用户,一般系统定时任务会使用root用户来执行,系统定时任务还可以配置定时任务的路径,但是要使用“run-parts”,例如每个小时执行文件夹下面的定时任务,用户定时任务不能指定文件夹。
00 * * * * root run-parts /etc/cron.hourly

 

用户任务调度

用户的定时任务可以通过执行crontab命令来创建,一个用户只会生成一个定时任务文件会以用户名命名,用户定义的定时任务都保存在“/var/spool/cron”目录下,用户任务调度和系统任务调度的时间段是一样的, 唯一的区别就是用户任务调度不需要指定用户名,而且也不能使用run-parts参数指定目录。
 

crontab命令选项

crontab [-u user] file

crontab [-u user] [ -e | -l | -r ]

  • -e:创建和编辑定时任务,默认是创建和编辑当前用户的定时任务,只有root可以创建也编辑其它用户的定时任务。

  • -l:列出当前用户的定时任务,如果使用了-u参数指定了用户那么就是列出指定用户的定时任务。

  • -r:删除当前用户的定时任务,如果使用了-u参数指定了用户那么就是删除指定用户的定时任务。

  • -i:在删除用户命令前加以提示,-i参数不能单独使用需要结合-r参数以前使用。

crontab任务格式

crontab分别有五个时间段,以空格隔开分别如下:
minute hour day month week command 顺序:分 时 日 月 周

其中:

  • minute: 表示分钟,可以是从0到59之间的任何整数。

  • hour:表示小时,可以是从0到23之间的任何整数。

  • day:表示日期,可以是从1到31之间的任何整数。

  • month:表示月份,可以是从1到12之间的任何整数。

  • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:

  • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

  • 逗号(,):可以用逗号隔开的值指定一个列表范围,如:“1,2,5,7,8,9”,如果是month则表示这几个月执行该命令。

  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“10-23/2”如果是指小时代表10点到23点每隔2个小时执行一次。例如*/1可以表示每隔一个小时执行一次。

其它限制:

/etc/cron.deny 该文件中所列用户不允许使用crontab命令

/etc/cron.allow 该文件中所列用户允许使用crontab命令 

/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名

注意:默认的用户的shell,path,mailto,home是没有定义的,可以单独定义用户的这几个变量否则可能会出现用户找不到一些用户软件的命令,具体的定义方法可以参考系统任务的定义,主要还是SHELL、PATH。默认的用户的这几个变量信息如下:

X-Cron-Env:<SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/chen>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=chen>
X-Cron-Env: <USER=chen>

 

例如我定义的用户定时任务:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin
MAILTO=chen
HOME=/data/backup
*/5 01-06,13-18 * * * ./userbackup.sh test

上面定义了每天的1点到6点和13点到18点,每隔5分钟执行命令。

注意:时间范围01-06是指01:00-06:59,命令后面可以使用“;”连接多个命令

总结

定时任务很实用,而且实用方法也很多,有兴趣可以慢慢研究。

 

 

 


本文转自pursuer.chen(陈敏华)博客园博客,原文链接:http://www.cnblogs.com/chenmh/p/5430258.html,如需转载请自行联系原作者

目录
相关文章
|
6月前
|
监控 Ubuntu Linux
linux下添加定时任务
linux下添加定时任务
45 0
|
5月前
|
Linux 开发工具 Python
【Linux】定时任务
【Linux】定时任务
32 1
|
11月前
|
Linux
linux设置定时任务
linux设置定时任务
72 0
|
12月前
|
NoSQL 关系型数据库 MySQL
linux-定时任务
linux-定时任务
72 0
|
Linux 调度
Linux定时任务
Linux定时任务
|
Linux
linux定时任务
linux定时任务
134 0
linux定时任务
|
Linux
linux 系统定时任务 服务 详解
linux 系统定时任务 服务 详解
519 0
linux 系统定时任务 服务 详解
|
Shell Linux 数据安全/隐私保护
12.19 Linux定时执行任务(at命令)
要想使用 at 命令,读者需提前安装好 at 软件包,并开启 atd 服务。因此,首先来看看如何安装 at 软件包。
507 0
12.19 Linux定时执行任务(at命令)
|
Java Linux Shell
Linux 定时任务调度(crontab),太实用了!
Linux 定时任务调度(crontab),太实用了!
407 0
Linux 定时任务调度(crontab),太实用了!
|
Linux 数据安全/隐私保护
Linux定时任务计划
Linux定时任务计划在使用Linux系统时,我们有时会需要让系统在某个时间去执行特定的任务,这时就需要去了解Linux提供的定时任务功能 种类Linux的定时任务分为两种:单一型和循环型 单一型:atatd启动at:是一个可以处理仅执行一次就结束的命令,执行at时,必须开启atd服务.
1306 0