shell:cron进行调度

在日常的运维的过程当中,必定能遇见定时执行一些任务的需求,例如,定时执行某些任务脚本。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工场”微信服务号 ,时刻关注我们的最新的技术讯息! (甭客气!尽情的扫描或者长按!)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值