LINUX下的计划任务CRONTAB
在WINDOWS下,大家都知道可以通过计划任务来定时触发预先指定程序的执行来自动完成某些工作,那么LINUX下是否有类似的计划任务呢?答案就是CRON。CRON是LINUX下的一个守护进程,用于执行一次性的或者周期性的计划任务。对CRON的设置通过命令CRONTAB就可以方便地完成了。
CRONTAB命令的格式
使用CRONTAB命令的格式有两种:
- 格式一: crontab [ -u user ] file
- 格式二: crontab [ -u user ] [ -i ] { -e | -l | -r }
上面两种格式中的[-u user]是指定对哪个LINUX用户的计划任务做操作,未指定的话就默认为当前的LINUX用户。格式一是用于将一个已编辑好的符合CRONTAB格式的自定义计划任务文件载入到计划任务中;格式二是直接对指定的LINUX用户的计划任务进行编辑、查看和删除操作。现实场景中,格式二远比格式一常用。
CRONTAB文件的格式
如果是对当前用户的计划任务进行编辑,直接用命令”crontab -e”就可以看到如下标准的CRONTAB文件:
- jy@JYTech:~$ crontab -e
- # Edit this file to introduce tasks to be run by cron.
- #
- # Each task to run has to be defined through a single line
- # indicating with different fields when the task will be run
- # and what command to run for the task
- #
- # To define the time you can provide concrete values for
- # minute (m), hour (h), day of month (dom), month (mon),
- # and day of week (dow) or use ‘*’ in these fields (for ‘any’).#
- # Notice that tasks will be started based on the cron’s system
- # daemon’s notion of time and timezones.
- #
- # Output of the crontab jobs (including errors) is sent through
- # email to the user the crontab file belongs to (unless redirected).
- #
- # For example, you can run a backup of all your user accounts
- # at 5 a.m every week with:
- # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
- #
- # For more information see the manual pages of crontab(5) and cron(8)
- #
- # m h dom mon dow command
其实打开看到的现有内容都是说明文字,并有个一个设置计划任务的例子。这里需要注意的是最后一行表明了CRONTAB文件内容的标准格式。
- minute hour day-of-month month-of-year day-of-week commands
- 分钟 小时 几号 几月 星期几 任务命令
正如上面说明文字中给的例子那样,“0 5 * * 1 tar -zcf /var/backups/home.tgz /home/”这行就代表设置了一个每周一凌晨5点整(服务器时间)开始执行的计划任务,任务通过命令“tar -zcf /var/backups/home.tgz /home/”来打包home文件夹到指定位置。
CRONTAB文件用到的特殊符号
上面给的例子是比较简单的,相信大家设置起来并不困难。但现实工作中经常需要设置复杂一点的计划任务,如:
- 每月的1号和15号凌晨3点整进行备份;
- 工作日(周一到周五)每晚6点半关闭服务器;
- 每隔2小时输出一条记录。
设置起来要就稍微复杂一点了,但是不要担心,因为CRONTAB文件支持下面这些特殊符号,有了它们,再复杂的情况也能应付自如。
- “*”代表取值范围内的数字,
- “/”代表”每”,
- “–”代表从某个数字到某个数字,
- “,”分开几个离散的数字
例如上面提到的“工作日(周一到周五)每晚6点半关闭服务器”,加入到计划任务就大概是这样:
- 30 18 * * 1-5 /sbin/shutdown -h now
这里用到了特殊字符“-”来指定周一到周五。
此外,在CRONTAB的使用上还要特别注意两点:
- 当前用户是否有执行指定命令的权限
- 用到的LINUX命令要用绝对地址
好啦,关于LINUX下的计划任务CRON和CRONTAB,小卓就介绍到这里啦,如果大家在使用上有什么困难的,欢迎留言或直接与小卓联系。