文档章节

linux crontab

 人生如梦19
发布于 2016/03/30 14:51
字数 2578
阅读 9
收藏 0

一、作用

使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户。

二、格式

crontab [-u user] {-l | -r | -e}
// -e:执行文字编辑器来设定时程表,内空的文字编辑器是vi
// -r:删除目前的时程表
// -l:列出目前的时程表

Crontab文件的格式为”M H D m d cmd”。其中,

  • M代表分钟(0~59)

  • H代表小时(0~23)

  • D代表天(1~31)

  • m代表月(1~12)

  • d代表一星期内的天(0~6,0为星期天)

  • Cmd表示要运行的程序,它被送入sh执行,这个shell只有USER、HOME、SHELL三个环境变量。

使用cron服务,用server crond status查看cron服务状态,如果没有启动则service crond start启动它,cron服务是一个定时执行的服务,可以通过crontab命令添加或编辑需要定时执行的任务:

  • crontab –u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

  • crontab –l //列出某个用户cron服务的详细内容

  • crontab –r //删除某个用户的cron服务

  • crontab –e //编辑某个用户的cron服务

  • crontab filename //以filename作为crontab的任务列表文件并载入

三、使用(1)

比如说root查看自己的cron设置:crontab –u root –l

再例如,root想删除fred的cron设置:crontab –u fred –r

在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab –u root –e

进入vi编辑模式,编辑的内容一定要符合下面的格式:

*/1   *     *     *     *     ls >>/tmp/ls.txt

编辑/etc/crontab文件,在末尾加上一行:30 5 * * * root init 6这样就将系统配置为每天早上5点30分自动重新启动。

crontab 文件中的行由6个字段组成,不同字段间用空格或tab键分隔。

例子:

#MIN    HOUR     DAY      MONTH  DAYOFWEEK       COMMAND
10    6     *     *     *     date #每天早上6点10分
0     */2   *     *     *     date #每两个小时
0     23-7/2,8      *     *     *     date #晚上11点到早上8点之间每两个小时,早上8点
0     11    4     *     1-3  date              #每个月的4号和每个礼拜一到礼拜三的早上11点
0     4     1     1       *  date                #1月1日早上4点

补充:在使用crontab的时候,要特别注意的是运行脚本中能够访问到的环境变量和当前测试环境中环境变量未必一致,一个比较保险的做法是在运行的脚本程序中自行设置环境变量(export)

三、使用(2)

(1) 先建一个文件crond.txt如下,每天早上5点36分重新启动

36 5 * * * reboot

(2)上传到/opt目录

(3)运行命令

crontab /opt/crond.txt

crontab –l

让配置文件生效:如果让配置文件生效,还得重新启动cron,切记,既然每个用户下的cron配置文件修改后,也要重新启动cron服务器。

在Fedora和Redhat中,我们应该用:

/etc/rc.d/crond restart

如果让crond在开机时运行,应该改变其运行级别:

chkconfig –level 35 crond on





Linux系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可以设置计划任务

一、crond简介

crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

Linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

/etc/crontab文件包括下面几行:

[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash  // 第一行SHELL变量指定了系统要使用哪个shell,这里是bas
PATH=/sbin:/bin:/usr/sbin:/usr/bin  // 第二行PATH变量指定了系统执行命令的路径
MAILTO="" // 第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户, 如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
HOME=/    // 第四行的HOME变量指定了在执行命令或者脚本时使用的主目录
# run-parts
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
[root@localhost ~]#

前四行是用来配置crond任务运行的环境变量

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

使用者权限文件:

文件:/etc/cron.deny

说明:该文件中所列用户不允许使用crontab命令

文件:/etc/cron.allow

说明:该文件中所列用户允许使用crontab命令

文件:/var/spool/cron/

说明:所有用户crontab文件存放的目录,以用户名命名

crontab文件的含义:

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段:

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

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

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

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

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

二、crond服务

安装crontab:

yum install crontabs

服务操作说明:

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

查看crontab服务状态:

service crond status

手动启动crontab服务:

service crond start

查看crontab服务是否已设置为开机启动,执行命令:

ntsysv

加入开机自动启动:

chkconfig –level 35 crond on

三、crontab命令详解

1.命令格式:

crontab [-u user] file

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

2.命令功能:

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。

3.命令参数:

-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。

file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。

-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

-i:在删除用户的crontab文件时给确认提示。

4.常用方法:

1). 创建一个新的crontab文件

在考虑向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。9 9 %的UNIX和Linux用户都使用vi,如果你也是这样,那么你就编辑$ HOME目录下的. profile文件,在其中加入这样一行:

EDITOR=vi; export EDITOR

然后保存并退出。不妨创建一个名为<user> cron的文件,其中<user>是用户名,例如, davecron。在该文件中加入如下的内容。

# (put your own initials here)echo the date to the console every

# 15minutes between 6pm and 6am

0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console

保存并退出。确信前面5个域用空格分隔。

在上面的例子中,系统将每隔1 5分钟向控制台输出一次当前时间。如果系统崩溃或挂起,从最后所显示的时间就可以一眼看出系统是什么时间停止工作的。在有些系统中,用tty1来表示控制台,可以根据实际情况对上面的例子进行相应的修改。为了提交你刚刚创建的crontab文件,可以把这个新创建的文件作为cron命令的参数:

$ crontab davecron

现在该文件已经提交给cron进程,它将每隔15分钟运行一次。

同时,新创建文件的一个副本已经被放在/var/spool/cron目录中,文件名就是用户名(即dave)。

Linux中利用crontab创建计划任务 http://www.linuxidc.com//Linux/2013-06/86401.htm

Linux中用crontab例行工作安排 http://www.linuxidc.com//Linux/2013-06/85441.htm

Linux crontab不执行问题排查 http://www.linuxidc.com//Linux/2013-06/85432.htm

Ubuntu使用crontab定时任务 http://www.linuxidc.com//Linux/2013-05/84770.htm

Linux计划任务(at batch crontab anacron) http://www.linuxidc.com//Linux/2013-03/81584.htm 

© 著作权归作者所有

上一篇: C++浓缩(六)
下一篇: C++浓缩(五)
粉丝 12
博文 60
码字总数 395354
作品 0
商丘
私信 提问

暂无文章

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
693
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
39
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
25
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
74
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
73
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部