A-A+

crontab定时任务

2015年11月19日 Linux 暂无评论 阅读 2,760 views 次

主要有3个参数:
crontab -e :编辑用户的crontab。
crontab -l :列出用户的crontab的内容。
crontab -r :删除用户的crontab的内容。
查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
查看crontab服务是否已设置为开机启动,执行命令:ntsysv
加入开机自动启动:chkconfig --level 35 crond on
/sbin/service crond start #启动服务
/sbin/service crond stop #关闭服务
/sbin/service crond restart #重启服务
/sbin/service crond reload #重新载入配置

 

 

 

linux crontab函数语法

假设希望每隔3分钟就访问一个网站, 在linux下, 可以用:

crontab -e

然后输入如下命令:

*/3 * * * * curl http://www.baidu.com

其中*/3 表示每3分钟访问一次. curl将http的内容(html)返回输出.

管理主机的时候,我们每天有些事情是经常要做的,为了避免每次都手工操作,我们可以编写计划任务,来让主机周期性地按照计划来自动执行。

安装启动

CentOS下:

yum install vixie-cron

yum install crontabs

安装前者一般会同样安装上后者。

启动服务。

service crond start

要启动该服务才行。

系统级crontab

用ls /etc/cron然后敲两下TAB,可以看到相关文件及目录。

cron.d/    cron.daily/  cron.hourly/  cron.monthly/ crontab  cron.weekly/

文件及目录解读

我们可以编辑crontab文件,来创建计划任务。

而以daily,hourly,weekly,monthly后缀的目录下分别存放每天,每月,每周,每月执行的任务。

其中存放的就是Shell脚本文件,权限755。我们把要执行的任务写成Shell脚本丢进行相应的目录就可以了。

而不规则周期的计划任务放在corn.d目录下面。可以看做是crontab文件的补充。

crontab文件格式

该文件开头包含必要的环境变量,不再介绍。

具体写法直接看源文件注释:

.---------------- 分钟 (0 - 59)

| .------------- 小时 (0 - 23)

| | .---------- 几号 (1 - 31)

| | | .------- 月份 (1 - 12) 或者 jan,feb,mar,apr ...

| | | | .---- 星期 (0 - 6) (星期日=0 或 7) 或者 sun,mon,tue,wed,thu,fri,sat

| | | | |

* * * * * 用户名 要执行的命令

一共七个字段,其含义一目了然。需要注意的是每个字段的写法。

* *表示每一个。比如minute字段下的*表示每一分钟执行

* */n表示每隔n。比如hour字段下,*/2表示每隔两小时执行。0-10/2表示1,3,5,7,9

* 1-5这种格式表示一共连续的时间段

* 1,3,5这种格式是枚举几个不连续的时间段

注意:

1. 第三个字段‘天’和第五个字段‘星期几’是或的关系。所以不会冲突,符合两种情况都执行。

2. 该文件中如果出现%要进行转义,比如date +%w 在该文件内编写的时候要写成date +\%w

3. 把分钟设置成*要慎重!

crontab命令(用户级)

命令选项

crontab [-u user] file

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

选项 描述

e 编辑计划任务

l 列出计划任务

r 删除计划任务

i 删除之前确认

u 指明所属用户

s selinux context

s选项不常用。

实际上该命令编辑的是/var/spool/cron/用户名 文件。

所以你也可以直接编辑该文件。

守护进程crond每分钟会读取该文件一次。

编写格式

格式与前文中crontab文件的编写格式相仿,但是没有用户user-name字段。

因为该命令只能编写当前用户的计划任务。

日志

在/var/log/cron下面可以看到全部日志。

而/var/spool/cron/在下面也可以看到一定的日志。

标签:

给我留言