在日常的运维的过程当中,必定能遇见定时执行一些任务的需求,例如,定时执行某些任务脚本。Linux中包含了各种可以用于任务调度的工具,corn就是其中之一。
一、什么是corn
corn通过守护进程cron使得任务能够按照固定的时间间隔在系统后台自动运行。cron利用的是一个叫做cron表的文件,这个文件存储了需要执行的脚本或命令的调度列表以及执行时间。所有的Linux默认都包含了cron调度工具,只要在cron表中写入条目,对应的命令就会在指定的时间执行。
二、添加cron表
1.使用corntab -e命令来添加作业(job),cron表不过是一个简单的文本文件而已;
# 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
*/1 * * * * /home/pengchengxiang/test.sh
cron表中的每一个条目都由6个部分组成,并按照下列顺序排列:
分钟(0~59 )
小时(0~23 )
天(1~31)
月份(1~12)
工作日(0~6)
命令(在指定时间执行的脚本或命令)
星号(*)指定命令应该在每个时间时间段执行(如果*写在cron作业中的小时字段,命令会没小时执行一次);
如果你希望在某个时间段执行命令,那就在对应的时间段中指定时段,并用逗号分隔(如果要在每5分钟和10分钟运行命令, 那就在分钟字段输入“5,10”);
让我们以特定的时间间隔运行命令(在分钟字段使用*/15,可以每5分钟执行一次命令);
一条cron表条目是由一项或多项cron作业组成,cron表条目中的每一行就是一项作业;
用例如下:
m h dom mon dow command
02 * * * * /home/pengchengxiang/test.sh //每天中的每个小时的第2分钟执行脚本test.sh
00 5,6,7 * * /home/pengchengxiang/test.sh //每天的第5、6、7小时执行脚本test.sh
00 */12 * * 0 /home/pengchengxiang/test.sh //在周日每隔12小时执行脚本test.sh
00 02 * * * /home/pengchengxiang/test.sh //每天凌晨2天执行脚本test.sh
注意:在我们使用corntab -e添加job的时候,默认的编辑工具为nano,不是特别方便使用。那么我们可以通过select-editor可以选择编辑器:
pengchengxiang@ubuntu:~$ select-editor
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/vim.basic
4. /usr/bin/vim.tiny
Choose 1-4 [2]: 3
三、查看cron表
使用选项-l,列出cron表中现有用户已有的条目。选项-u来查看其它用户的cron表;
pengchengxiang@ubuntu:~$ crontab -l
... ...
# m h dom mon dow command
*/1 * * * * /home/pengchengxiang/test.sh
tesh.sh文件
#!/bin/bash
echo "corn test." >> /home/pengchengxiang/test.txt
运行结果
pengchengxiang@ubuntu:~$ cat test.txt
corn test.
corn test.
... ...
四、删除cron表
可以使用选项-r删除当前用户的cron表,-u选项可以删除其它用户的cron表;
pengchengxiang@ubuntu:~$ crontab -r
pengchengxiang@ubuntu:~$ crontab -l
no crontab for pengchengxiang
五、补充内容
在cron作业中指定的命令需要使用完整路径,这是因为执行cron作业时环境变量与终端所用的环境不同,环境变量PATH可能都没有设置。如果命令行运行需要设置某些环境变量,就应该明确的设定;
执行cron作业所使用的权限同执行crontab命令所使用的权限相同,如果你需要执行要求更高权限的命令,例如关闭计算机,那么就要以root用户身份执行crontab;
新技术,新未来!欢迎大家关注
“1024工场”微信服务号
,时刻关注我们的最新的技术讯息!
(甭客气!尽情的扫描或者长按!)