秒级定时任务
#5s 执行一次
* * * * * /usr/bin/curl http://www.test.com
* * * * * sleep 5; /usr/bin/curl http://www.test.com
* * * * * sleep 10; /usr/bin/curl http://www.test.com
* * * * * sleep 15; /usr/bin/curl http://www.test.com
* * * * * sleep 20; /usr/bin/curl http://www.test.com
* * * * * sleep 25; /usr/bin/curl http://www.test.com
* * * * * sleep 30; /usr/bin/curl http://www.test.com
* * * * * sleep 35; /usr/bin/curl http://www.test.com
* * * * * sleep 40; /usr/bin/curl http://www.test.com
* * * * * sleep 45; /usr/bin/curl http://www.test.com
* * * * * sleep 50; /usr/bin/curl http://www.test.com
* * * * * sleep 55; /usr/bin/curl http://www.test.com
这样写就实现了每10秒执行一次,用了5个计划任务。如果要实现每5秒,甚至是每1秒执行一次,就要写59行计划任务了,显然太繁琐,可以用一个脚本的方式实现:
#!/bin/bash
step=1 #间隔的秒数,不能大于60
for ((i=0;i<60;i=(i+step)));do
$(date>>/mnt/file) #here you command
sleep $step
done
exit 0
N小时执行一次
Note
真正的每隔一小时、每隔105分钟执行的定时任务应该如何写呢?如下:
*/60 * * * * #每60分钟即每小时执行一次
*/105 * * * * #每105分钟执行一次
不严格来说 这也是可用的
这种也是错误的写法,这种能充分展示前面一小时执行一次带来的迷惑感,这种写法其实是每整3小时的0分执行一次。也就是说,它会在每天的3点、9点、12点...等3的整数倍时间点来执行,并不是真正意义上每隔3个小时执行
0 */3 * * * /script.sh
#每3小时执行一次
#半小时执行一次
0 0/30 * * *
知识点
man 5 crontab
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
crontab 脚本不能运行
#on debian
1.
这里要写绝对路径 不然 scrapy 找不到命令
或者 脚本加声明 /usr/local/bin/
# 爬虫任务
def task_scrapy_aicoin():
os.system("/usr/local/bin/scrapy crawl aicoin")
2.
要进入 对应的目录
Unknown command: crawl
Use "scrapy" to see available commands
记得查看日志 看日志排错就对了
tail /var/mail/mail
see also
每天一个linux命令(50):crontab命令
关于定时执行任务:Crontab的20个例子
crontab实现秒级的计划任务
Linux crontab 实现秒级定时任务
crontab的语法规则格式(每分钟、每小时、每天、每周、每月、每年定时执行 规则)