Bash玩转脚本7之说好的用crontab搞个自动任务
2017-11-12 22:38
211 查看
一、前言
在“【Python融于生活】之我想要保存QQ邮箱富途的附件”文章末尾说到,这种拉取附件的脚本可以使用一个定时任务去做,所以今天就来使用一下crontab,使用一个定时任务去做这件事情。传送门:
【Python融于生活】之我想要保存QQ邮箱富途的附件 :
http://blog.csdn.net/yang8456211/article/details/78449710
二、相关指令简介
这些东西简单写写,详细的可以自行Google2.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
本文遵循“署名-非商业用途-保持一致”创作公用协议
相关文章推荐
- crontab的定时任务不能自动执行,但是手动执行脚本一直能成功
- PHP计划任务:如何使用Linux的Crontab执行PHP脚本
- linux自动装载Windows下的分区以及bash启动脚本自定义命令
- Windows上自动FTP任务的脚本实现
- 利用计划任务和VBS脚本实现自动WEB共享文件夹里的文件
- centos中创建自动备份Mysql脚本任务并定期删除过期备份
- 定时自动启动任务crontab命令用法
- 利用CRONTAB自动定时执行任务(ARM-LINUX)
- 对于crontab定时任务不能自动执行的总结
- Linux中的crontab命令安排自动运行的进程任务
- Bash玩转脚本4之搞一套完整的Android反编译与分包工具
- FTP导入脚本自动执行任务示例
- Linux实现秒级定时任务(crontab)Shell小脚本
- crontab中使用环境变量的方法(手动执行shell脚本可以,在定时任务中不行)
- Linux计划任务crontab运行脚本不正确的问题
- Linux01-BASH脚本编程之信号捕捉及任务计划53
- 使用自定义脚本扩展程序自动执行 VM 自定义任务
- 【转】PHP计划任务:如何使用Linux的Crontab执行PHP脚本
- 如何避免Docker容器启动脚本运行后自动退出——一个cron定时任务docker镜像方案
- CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本定时任务方式实现mysql数据库服务随机自动启动