“每天一命令之crontab”的版本间的差异

来自linux中国网wiki
跳到导航 跳到搜索
docker>Evan
(创建页面,内容为“ =see also= [http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html 每天一个linux命令(50):crontab命令] category:ops”)
 
 
(未显示同一用户的16个中间版本)
第1行: 第1行:
 +
= 秒级定时任务=
 +
<pre>
 +
#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
 +
</pre>
 +
 +
=N小时执行一次=
 +
<pre>
 +
 +
Note
 +
真正的每隔一小时、每隔105分钟执行的定时任务应该如何写呢?如下:
 +
 +
*/60  * * * * #每60分钟即每小时执行一次
 +
*/105 * * * * #每105分钟执行一次
 +
 +
不严格来说 这也是可用的
 +
这种也是错误的写法,这种能充分展示前面一小时执行一次带来的迷惑感,这种写法其实是每整3小时的0分执行一次。也就是说,它会在每天的3点、9点、12点...等3的整数倍时间点来执行,并不是真正意义上每隔3个小时执行
 +
 +
0 */3 * * * /script.sh
 +
#每3小时执行一次
 +
 +
 +
#半小时执行一次
 +
0 0/30 * * *
 +
 +
 +
每2天
 +
15 0 */2 * *
 +
 +
</pre>
 +
[https://blog.csdn.net/jinguangliu/article/details/83013646  如何使用cron任务每隔2天在固定时间执行任务]
 +
 +
=知识点=
 +
<pre>
 +
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)
 +
 +
 +
 +
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
 +
</pre>
 +
 +
=crontab 脚本不能运行=
 +
<pre>
 +
 +
#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
 +
 +
 +
</pre>
  
 
=see also=
 
=see also=
 
[http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html 每天一个linux命令(50):crontab命令]
 
[http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html 每天一个linux命令(50):crontab命令]
 +
 +
[https://www.jianshu.com/p/d93e2b177814 关于定时执行任务:Crontab的20个例子]
 +
 +
 +
[https://blog.csdn.net/weixin_37998647/article/details/78669940  crontab实现秒级的计划任务]
 +
 +
[https://www.cnblogs.com/handle/p/9246197.html  Linux crontab 实现秒级定时任务 ]
 +
 +
[https://blog.csdn.net/xinyflove/article/details/83178876  crontab的语法规则格式(每分钟、每小时、每天、每周、每月、每年定时执行 规则)]
  
 
[[category:ops]]
 
[[category:ops]]

2022年2月17日 (四) 01:33的最新版本

秒级定时任务

#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 * * *


每2天
15 0 */2 * * 

如何使用cron任务每隔2天在固定时间执行任务

知识点

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)



30 7 8 * * ls 指定每月8号的7:30分执行ls命令

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的语法规则格式(每分钟、每小时、每天、每周、每月、每年定时执行 规则)