您的位置:首页 > 运维架构 > Shell

Bash玩转脚本7之说好的用crontab搞个自动任务

2017-11-12 22:38 211 查看

一、前言

在“【Python融于生活】之我想要保存QQ邮箱富途的附件”文章末尾说到,这种拉取附件的脚本可以使用一个定时任务去做,所以今天就来使用一下crontab,使用一个定时任务去做这件事情。

传送门:

【Python融于生活】之我想要保存QQ邮箱富途的附件 :

http://blog.csdn.net/yang8456211/article/details/78449710

二、相关指令简介

这些东西简单写写,详细的可以自行Google

2.1 crontab是什么?

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。


2.2 crontab的使用

1)查看服务是否启动

sudo launchctl list | grep cron




有进程就说明是有添加到launchctl里。

2)相关指令

crontab -e 编辑当前用户的crontab定时任务
crontab -l 查看当前用户的crontab定时任务
crontab -r 删除当前用户的crontab定时任务


3)crontab 定时任务的格式

* * * * * *
第1个星号表示分钟(0-59)
第2个星号表示小时(0-23)
第3个星号表示日期(0-31)
第4个星号表示月份(0-12)
第5个星号表示星期几(0-6,0是周日,6是周六)
第6个星号表示执行的指令


三、Here we go

1)首先做一个测试,使用crontab执行一个简单的指令

使用crontab -e 打开编辑crontab,第一次的时候会有个询问是否创建对应的文件,创建即可。

在crontab中添加一条:



* * * * * 代表每分钟都会执行

然后
tail
一下看看文件是否写入了,看样子写入没有什么问题。



2)开始写定时任务脚本,取名为ycrontab.sh,用一个bash脚本统一管理。

#!/bin/bash
# @auth atany 347702498@qq.com
# blog : http://blog.csdn.net/yang8456211 # useage : for crontab

logFileName=.ycrontab.log
logFilePath=~/$logFileName

run_task(){
pyPath="/Users/yangguang/Just_for_fun/Python/proj/Mail/DownLoadMail.py"
python $pyPath >> $logFilePath
}

echo `date "+%Y-%m-%d %H:%M:%S"`":Auto Run ycrontab start" >> ~/$logFileName

run_task

echo `date "+%Y-%m-%d %H:%M:%S"`":Auto Run ycrontab end" >> ~/$logFileName


脚本做了两件事情:

写了一个run_task去跑固定的脚本,这里跑的是下载富途附件的那个脚本。

在HOME下面生成了一个隐藏的日志文件,重定向相关的日志到里面去做个记录。

3)尝试用软连接的方式进行加入到crontab中。

之前写的创建软连接脚本又用上了,每次看到很久之前写的脚本还能运行心里就很欣慰。

【Bash玩转脚本1之自己的脚本安装程序】

http://blog.csdn.net/yang8456211/article/details/51020797

创建完软链接(ycrontab)之后使用
crontab -e
添加一条数据



等待了一下发现并没有执行,猜测是因为在crontab中不会去读取环境变量吗?那貌似只能Hard Code,虽然我很不喜欢。

4)Hard Code

添加完整的脚本路径:



10分钟执行一次,指定固定的脚本。- -



tail -f ~/.ycrontab.log
看到日志已经记录下来了。

新的附件也已经下载下来了,已经下载了最近的一个11月10号的了。



ok,大功告成。

修改crontab,定在晚上十点吧

* 22 * * * sh /Users/yangguang/GitHub/Script/AtSaiShell/sys/script/ycrontab.sh


四、后续问题

1、可以使用smtp每次任务完成之后给我发个邮件通知一下。

2、为什么在定时任务里面不直接跑python的脚本呢,而是写了一个bash的管理脚本,目前看来其实多了一层用处不大,可以想想这个脚本还可以干一些什么(弹出确认提示之类的?)

杨光(atany)原创,转载请注明博主与博文链接,未经博主允许,禁止任何商业用途。

博文地址:http://blog.csdn.net/yang8456211/article/details/78515927

博客地址:http://blog.csdn.net/yang8456211

本文遵循“署名-非商业用途-保持一致”创作公用协议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: