ubuntu定时执行任务
前几天女神给我发了条消息,“为什么我每天早上九点都会收到你给我发的天气信息的邮件?”然后……
当然,我是不可能告诉她,我是用crontab来定时执行python脚本滴!
好了,废话不多说,直接进入正题!
ubuntu定时执行任务
cron是一个Linux下的后台进程,用来定期的执行一些任务。因为我用的是Ubuntu,所以这篇文章中的所有命令也只能保证在Ubuntu下有效。
查看cron是否运行
ps -ef | grep cron
开始的时候,我的ubuntu的cron不是自动运行的,所以sudo service cron start
1:编辑crontab文件,用来存放你要执行的命令
sudo crontab -e
2:第一次用这个命令,会让你选择文本编辑器,我选的是vim
(输入数字选择就是了!)
3:添加执行命令
0 9 * * * /home/katyusha/code/sendemail.py
sendeamil.py就是我给女神发邮件的脚本,这句话的意思就是每天早上九点都会自动执行这个脚本!(至于0 9 * * *这些东西,以下会详解!)
4:重启cron来应用这个计划任务
sudo service cron restart
corntab详细说明
1:crontab文件的基本格式如下所示
* * * * * command
分 时 天 月 周 命令
crontab中的每一行代表一个定期执行的任务,分为6个部分。前5个部分表示何时执行命令,最后一个部分表示执行的命令。每个部分以空格分隔,除了最后一个部分(命令)可以在内部使用空格之外,其他部分都不能使用空格。前5个部分分别代表:分钟,小时,天,月,星期,每个部分的取值范围如下:
分钟 0 - 59
小时 0 - 23
天 1 - 31
月 1 - 12
星期 0 - 6 0表示星期天
* (星号) 表示任意值,比如在小时部分填写 * 代表任意小时(每小时)
,(逗号) 可以允许在一个部分中填写多个值,比如在分钟部分填写 1,3 表示一分钟或三分钟
/(斜线) 一般配合 * 使用,代表每隔多长时间,比如在小时部分填写 /2 代表每隔两分钟。所以 /1 和 * 没有区别
2:crontab例子
(1)30 20 * * * date >> /home/date.log //每天的20:30将日期信息追加home目录下的date.log中
(2)5 20 13,14 * * date >> /home/date.log //每月的13日,14日20:5分将日期信息最追加home目录下的date.log中
(3)0,10 10,12 * * * date >> /home/date.log //每天10点至12点之间,隔10分钟将日期信息最追加home目录下的date.log中
(4)/5 * * * date >> /home/date.log //每5分钟将日期信息最追加home目录下的date.log中
3:crontab是UNIX系统下定期执行任务的触发器。用户把要定期执行的任务记录在这个文件下面,然后crond定期的去检查这个定期执行列表,有要执行的工作时便自动执行。
通过man crontab可以查看到下面的信息
(1)/etc/crond.allow 表示的是允许使用crontab的用户列表
(2)/etc/crond.deny 表示的是不允许使用crontab的用户列表
4: crontab常用的几个命令格式
crontab -l //显示用户的crontab文件的内容
crontab -e //编辑用户的crontab文件的内容
crontab -r //删除用户的crontab文件
好了crontab的就说到这里了,以后大家就可将从网上爬取的数据,定时以邮件的形式发给各自的女神了!
刚巧我的女神要用邮件!
(哈哈哈哈哈!)