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