首页 > 代码库 > Linux中的crontab命令用法

Linux中的crontab命令用法

Crontab

在linux中,crontab的用来设置定期执行指定的命令,我们可以用它来指定一些需要重复的事情,Linux系统的用户只需将想要定期要执行的命令序列加到crontab文件中,操作系统即会按用户配置的时间执行这些命令序列。向crontab文件里添加指令之前,需要检查下crontab服务是否已启动和是否开机自动启动:

【查看状态】

Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的

可以使用service crond status进行查看状态,下图是我在cenos中查看到的状态,可以看到是正在运行的。

 

如果需要启动crond服务,可以使用 service crond start命令来进行服务的启动

【设置开机自动启动】

我们需要设置服务为开机自启动,一般是默认设置好的,我们可以使用ntsysv打开服务配置进行查看,如下图所示,前边有*代表已经选中,向下翻查看crond是否被选中。

技术分享

 

技术分享

 

【命令格式】

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文件时给确认提示。

默认情况下,系统所有用户都可以使用crond服务。如需对crond服务的使用加限制,可以使用配置文件/etc/cron.allow和 /etc/cron.deny,望文生义,cron.allow是允许使用crond服务的用户清单,cron.deny里的用户则相反

 

crontab 文件中命令格式如下:

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

即:"分 时 日 月 周 命令",共计6段,前5段都是时间,最后一段才是你要定期执行的指令。每段之间使用空格或者制表符分隔。

来看一下前5段即日期和时间的取值范围

1,分钟[00-59] 2,小时[00-23] 3,日[01-31] 4,月份[01-12]
5,周[0-6] ;注意,这里的0表示周日

上面这条指令里使用了特殊符号"*",代表当前段取值范围内的所有数字,如第3段上的"*"代表[01-31]日,第4段上的"*"代表[01-12]月。

特殊符号除了"*"号还有"/"、"-"、",":

/ 代表"每"的意思,如"/5"表示每5个单位;
- 用于表示一个范围,如"[1-10]"表示从1到10;
, 用于表示若干离散的数字,如"5,15,25"

 

编辑crontab文件

例子;crontab –e

之后直接编辑你想实现的操作,保存并退出。比如

00 09 * * 3 echo "Hello new day!" >> /tmp/book

我们此时再使用crontab –l就可以看到刚刚设置的东西。也可以在/var/spool/cron目录中查看到。文件名字就是用户名。

技术分享

为了看一下最终效果我先设置一个能看出效果的例子,如下:

20 22 * * * echo "Good Night!" >> /tmp/book

结果如下:可以看到,mybook文件中已经被写入了Good Night

技术分享

Linux中的crontab命令用法