Ubuntu 定时执行脚本
一、关于crontab
cron是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业。在Ubuntu中,cron是被默认安装并启动的。
二、例子
直接上例子,来看看怎么用。
需求:定时每天8点,自动执行保存在/root目录下hello.sh脚本
1、方法很简单,只需编辑ect下crontab文件就行了,这个文件里存放的就是cron要执行的命令,以及定时执行的时间
vim /etc/crontab
2、最后一行添加:
00 08 * * * root /root/hello.sh
三、解释
1、crontab定时任务语法如下:
minute hour day month week user command #顺序:分 时 日 月 周 用户 命令
2、说明:
minute: 表示分钟,可以是从 0 到 59 之间的任何整数。
3、在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如 month 字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,\
例如*/10,如果用在 minute 字段,表示每十分钟执行一次。
四、补充
cron 服务的启动与停止,命令如下:
1)servicecronstart/*启动服务*/
2)servicecronstop /*关闭服务*/
3)service cron restart /*重启服务*/
4)service cron reload /*重新载入配置*/
5)service cronstatus /*查看crond状态*/
五、兴趣拓展
写了一个每天8点从中国天气网爬取今天天气,传到ssh登录欢迎页面的小程序。这样每次ssh连接的时候就能看到当天的天气情况了。因为我在深圳所以用的深圳的例子来举,你可以自己去中国天气网找到自己城市的页面来爬。
1、shell脚本:/bin/tianqi.sh
#!/bin/bash
weatherDateRoot=http://www.weather.com.cn/weather1d/101280601.shtml #中国天气网深圳
weatherDataFile=/root/weather.html
wget $weatherDateRoot -O $weatherDataFile > /dev/null 2>&1 #下载页面
result=$(cat $weatherDataFile | sed -n '/>/etc/update-motd.d/00-header
#将数据写入欢迎页面文件,我这边还添了个深圳两个字
2、crontab文件:
00 08 * * * root cp /etc/update-motd.d/00-header_bk /etc/update-motd.d/00-header
01 08 * * * root /bin/tianqi.sh
什么意思呢,第一条执行的是将备份的00-header_bk文件覆盖00-header文件,因为每次执行完tianqi.sh,都会在最后追加当日天气状况,如果不用备份覆盖,那么就会保留有之前的天气。因此,第一次启用这个程序之前需要先备份一下00-header卡盟,命名为00-header_bk。第二条就是执行天气获取脚本了。