crontab计划任务的使用

Linux在相应用户下,用crontab -l 命令可以查看该用户定时执行的任务,-e可以编辑,但是其真实文件在哪儿呢??
以CentOS为例,其真实的位置在:/var/spool/cron下面,有执行定时任务的用户将会有以该用户命名的一个文档,vim该文档与用命令crontab -l看到的一样。

crontab命令

crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。也就是说,用户把需要执行的命令序列放到crontab文件中以获得执行。每个用户都可以有自己的crontab文件。下面就来看看如何创建一个crontab文件。

在/var/spool/cron下的crontab文件不可以直接创建或者直接修改。crontab文件是通过crontab命令得到的。现在假设 有个用户名为foxy,需要创建自己的一个crontab文件。首先可以使用任何文本编辑器建立一个新文件,然后向其中写入需要运行的命令和要定期执行的 时间。

然后存盘退出。假设该文件为/tmp/test.cron。再后就是使用crontab命令来安装这个文件,使之成为该用户的crontab文件。键入:

crontab test.cron

这样一个crontab 文件就建立好了。可以转到/var/spool/cron目录下面查看,发现多了一个foxy文件。这个文件就是所需的crontab 文件。用more命令查看该文件的内容可以发现文件头有三行信息:

#DO NOT EDIT THIS FILE -edit the master and reinstall.

#(test.cron installed on Mon Feb 22 14:20:20 1999)

#(cron version --$Id:crontab.c,v 2.13 1994/01/17 03:20:37 vivie Exp $)

大概意思是:

#切勿编辑此文件——如果需要改变请编辑源文件然后重新安装。

#test.cron文件安装时间:14:20:20 02/22/1999

如果需要改变其中的命令内容时,还是需要重新编辑原来的文件,然后再使用crontab命令安装。

可以使用crontab命令的用户是有限制的。如果/etc/cron.allow文件存在,那么只有其中列出的用户才能使用该命令;如果该文件不存 在但cron.deny文件存在,那么只有未列在该文件中的用户才能使用crontab命令;如果两个文件都不存在,那就取决于一些参数的设置,可能是只 允许超级用户使用该命令,也可能是所有用户都可以使用该命令。

crontab命令的语法格式如下:

crontab [-u user] file

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

第一种格式用于安装一个新的crontab 文件,安装 淳褪莊ile所指的文件,如果使用“-”符号作为文件名,那就意味着使用标准输入作为安装来源。

-u 如果使用该选项,也就是指定了是哪个具体用户的crontab 文件将被修改。如果不指定该选项,crontab 将默认是操作者本人的crontab ,也就是执行该crontab 命令的用户的crontab 文件将被修改。但是请注意,如果使用了su命令再使用crontab 命令很可能就会出现混乱的情况。所以如果是使用了su命令,最好使用-u选项来指定究竟是哪个用户的crontab文件。

-l 在标准输出上显示当前的crontab。

-r 删除当前的crontab文件。

-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。

[例7]

# crontab -l #列出用户目前的crontab。

10 6 * * * date

0 */2 * * * date

0 23-7/2,8 * * * date

#

在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下:

minute hour day-of-month month-of-year day-of-week commands

第一项是分钟,第二项是小时,第三项是一个月的第几天,第四项是一年的第几个月,第五项是一周的星期几,第六项是要执行的命令。这些项都不能为空,必 须填入。如果用户不需要指定其中的几项,那么可以使用*代替。因为*是统配符,可以代替任何字符,所以就可以认为是任何时间,也就是该项被忽略了。在表 4-1中给出了每项的合法范围。

表4-1 指定时间的合法范围

时间 
合法值

minute 
00-59

hour 
00-23,其中00点就是晚上12点

day-of-month 
01-31

month-of-year 
01-12

day-of-week 
0-6,其中周日是0

这样用户就可以往crontab 文件中写入无限多的行以完成无限多的命令。命令域中可以写入所有可以在命令行写入的命令和符号,其他所有时间域都支持列举,也就是域中可以写入很多的时间 值,只要满足这些时间值中的任何一个都执行命令,每两个时间值中间使用逗号分隔。

除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。几个例子:

每天早上6点

0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时

0 */2 * * * echo "Have a break now." >> /tmp/test.txt

晚上11点到早上8点之间每两个小时,早上八点

0 23-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

0 11 4 * 1-3 command line

1月1日早上4点

0 4 1 1 * command line

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=/ //使用者运行的路径,这里是根目录
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本

大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了。  

[例8]

5,15,25,35,45,55 16,17,18 * * * command

这就是表示任意天任意月,其实就是每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。

[例9] 在每周一,三,五的下午3:00系统进入维护状态,重新启动系统。那么在crontab 文件中就应该写入如下字段:

00 15 * * 1,3,5 shutdown -r +5

然后将该文件存盘为foxy.cron,再键入crontab foxy.cron安装该文件。

[例10] 每小时的10分,40分执行用户目录下的innd/bbslin这个指令:

10,40 * * * * innd/bbslink

[例11] 每小时的1分执行用户目录下的bin/account这个指令:

1 * * * * bin/account

[例12] 每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔):

20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)

[例13] 每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。

12,55 3 4-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt

[例14] 我们来看一个超级用户的crontab文件:

#Run the ‘atrun’ program every minutes

#This runs anything that’s due to run from ‘at’.See man ‘at’ or ‘atrun’.

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/lib/atrun

40 7 * * * updatedb

8,10,22,30,39,46,54,58 * * * * /bin/sync

原文:http://blog.sina.com.cn/s/blog_49f8dc400100tzn7.html

原文地址:https://www.cnblogs.com/jiaoran/p/10316343.html

时间: 2024-08-29 21:49:17

crontab计划任务的使用的相关文章

crontab计划任务补充知识

一.计划任务的重要性 说明:作为系统运维人员都清楚,在Linux下定义重复性的任务,我们一般会采用crontab来进行:crontab这个指令所设置的工作将会循环的一直进行下去!可循环的时间为分钟.小时.每日.每月.每周. 二.crontab计划任务: 1)常见用法: crontab命令的作用和用法如下: 描述:为每个用户维护周期性的计划任务文件 用法:crontab [-u 用户][-l|-r|-e] -u <user>  指定某个用户的计划任务(只有root用户才有这个权限) -e    

crontab计划任务命令的使用

crond命令简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务. Linux下的任务调度分为两类,系统任务调度和用户任务调度. 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘.日志清理等.在/etc目录下有一个crontab文件,这个就是系统任务调度的

centos crontab 计划任务 设置与查看

centos 上 crontab 计划任务 ,这个版本解释的比较清晰 林涛 发表于:2017-4-27 11:11 分类:26点 标签:crontab,Linux,计划任务 36次 这个版本的crontab命令解释的很详细 yum install vixie-cron yum install crontabs /bin/systemctl restart crond.service  #启动服务 /bin/systemctl reload  crond.service  #重新载入配置 /bin

crontab计划任务无法执行(小结)

最近在与朋友梳理运维中遇到的坑的时候,发现大家都遇见过crontab计划任务没法正常执行的情况,如是简单的整理下,主要有如下几种情况: 1.环境变量是否定义 说明:crontab执行shell时,只能识别为数不多的环境变量,所有在脚本中最好使用export重新声明下该变量 说明:shell脚本rman备份oracle,直接执行脚本中的命令,可以备份,但写到脚本并放入crontab中,计划任务就无法执行(后来在脚本中source环境变量),再次执行就OK了 2.脚本是否有可执行权限 说明:对于sh

Linux crontab 计划任务整理

Linux crontab 计划任务整理 安装 yum install -y vixie-cron # 安装 常用命令 crontab -e # 编辑 crontab -l # 查看 crontab -u # 指定用户 service crond start # 启动 service crond stop # 关闭 service crond restart # 重启 service crond reload # 重载配置 配置 格式 * * * * * 分 时 日 月 星期(0-6) 说明 *

crontab计划执行脚本详解

Crontab是Linux系统中在固定时间执行某一个程序的工具,类似于Windows系统中的任务计划程序. 一.安装crontab yum install vixie-cron  #安装 chkconfig crond on     #设为开机启动,安装chkconfig(yum install chkconfig)   ###设置启动方式 service crond start  #启动 service crond stop  #停止 或者 /etc/rc.d/init.d/crond sta

linux crontab 计划任务设置 (简结)

命令: crontab  -l  查看当前运行的计划任务 crontab  -e  编辑当前运行计划任务 修改或添加 按 i 键进入编辑文本状态, esc 结束编辑状态 , :wq 保存退出. 配置执行周期: * * * * * command 分 时 日   月 周   命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点)  //例:*  6  *  *  *  command  表示每天6点执行: *  */6  *  *  *  command 

Crontab 计划任务

Crontab是Linux运维最基础的命令之一,该命令的作用就是定期执行计划性工作,它类似于Windows的计划任务.CentOS自带这个服务而且是自动启动的,它的命令行工具crontab命令却不是Linux的内置命令.通过type命令就可以看出来. yum install crontab   安装 service crond start/stop/restart/reload Linux中调度任务分为两种:系统调度任务.用户调度任务 系统调度任务:顾名思义是系统发起的也就是内置的完成系统操作,

Crontab计划任务

Crontab是Linux系统中在固定时间执行某一个程序的工具,类似于Windows系统中的任务计划程序 基本格式 :* * * * * command分  时  日   月   周   命令 第1列表示分钟1-59 每分钟用*或者 */1表示第2列表示小时1-23(0表示0点)第3列表示日期1-31第4列表示月份1-12第5列标识号星期0-6(0表示星期天)第6列要运行的命令   使用方式 : crontab file [-u user]-用指定的文件替代目前的crontab. crontab

linux crontab 计划任务脚本

在LINUX中你应该先输入crontab -e,然后就会有个vi编辑界面,再输入0 3 * * 1 /clearigame2内容到里面 :wq 保存退出. 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cron的配置文件称为"crontab",是"cron table"的简写. 一.cron在3个地方查找配置文件:1./var/spool/