美文网首页
定时操作 crontab at 以及恢复定时操作

定时操作 crontab at 以及恢复定时操作

作者: ketchup | 来源:发表于2017-02-12 21:52 被阅读0次

1.crontab
2.Linux下实现秒级定时任务的三种方案(crontab 每秒运行)
3.apscheduler 定时任务框架(python实现)

1.定时模块crontab

 Example of job definition:
 .---------------- minute (0 - 59)
 |  .------------- hour (0 - 23)
 |  |  .---------- day of month (1 - 31)
 |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
 |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
 |  |  |  |  |
 *  *  *  *  * user-name  command to be executed

定时文件有两个地方

  • 1.crontab -e 用户定时任务,每个用户都有一个对应的crontab 文件,在/var/spool/cron/ 下
    1. /etc/crontab 这个是系统定时文件,不会根据用户不同而改变

注意:
定时任务的时候尽量写绝对路径
尽量不要用 crontab crontab_file 以免覆盖 当前用户的定时任务 源文件

遇到的问题:

  • 1.crontab 没有生效

    • 检查crontab是否启动
      centos: /etc/init.d/crond status
      /etc/init.s/crond restart

    • vi /etc/crontab 中, 要加执行用户username * * * * * user-name command to be executed

  • 2.如果不小心通过尽量不要用 crontab crontab_file 或者其他操作覆盖清出了当前用户下的定时文件,如何恢复?

    • a.获取完整日志和cmd日志.从日志中恢复出一份最近几天的完整crontab 运行日志和cmd日志,并存储,用于之后完善和核准例行时间。

        cat /var/log/cron | grep -i "`which cron`" > ./all_temp
        cat  ./all_temp | grep -v "<command>” > ./cmd_temp
      
    • b. 获取所有crontab指令。
      从日志中恢复一份去重的crontab log。【只保留所有的crontab命令】

        #去重, 根据没命令的执行次数排序
        cat all_temp | sort | uniq -c | more
      
    • 然后手动恢复 crontab 命令

常用的定时操作

每分钟执行 一次
*/1 * * * * /data/canopy/bin/python/data/jennyruhu/monitor_car/calThree.py 2 >>/data/jennyruhu/calThree.log

每30分钟执行一次
*/30 * * * * /data/python /data/rsync_ip_info.pyc 

每小时内固定时间执行一次(每个小时的01, 42, 44分的时候执行)
1,42,44 * * * * /data/python /data/rsync_ip_info.pyc 


每天执行一次
0 * * * * run-parts /etc/cron.hourly

每小时执行一次
0 0 * * * /data/bin/sync_data.sh

2.Linux下实现秒级定时任务的三种方案(crontab 每秒运行

第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间。

while true ;do
command
sleep XX //间隔秒
done



第二种方案,使用crontab。

我们都知道crontab的粒度最小是到分钟,但是我们还是可以通过变通的方法做到隔多少秒运行一次。
以下方法将每20秒执行一次

crontab -e 
* * * * * /bin/date
* * * * * sleep 20; /bin/date 
* * * * * sleep 40; /bin/date 

说明:需要将/bin/date更换成你的命令即可

这种做法去处理隔几十秒的定时任务还好,要是每1秒运行一次就得添加60条记录。。。如果每秒运行还是用方案一吧。

第三种方案:
Python任务调度模块 – APScheduler

3.Python任务调度模块 – APScheduler

image.png

相关文章

  • 定时操作 crontab at 以及恢复定时操作

    1.crontab2.Linux下实现秒级定时任务的三种方案(crontab 每秒运行)3.apscheduler...

  • memcache定时任务

    一下操作均在root用户下操作 定时任务命令: 1、定时任务服务提供crontab命令设定服务 2、crontab...

  • 定时器crontab操作

    crontab -e 按i进入编辑模式 ***** comand 从左到右的*依次表示:分时日月周 命令 每分钟通...

  • crontab(定时任务操作)

    定时任务顾名思义就是在某一时间点自动进行任务操作。 在做Pgsql的备份利用crontab进行定时操作, 使用起来...

  • 每天一个Linux命令:crontab

    crontab 定时执行操作命令,每一个用户拥有自己的crontab,配置文件存在/var下面,不能被直接编辑。 ...

  • linux-crontab

    最近,需要在linux中使用定时任务。cron就是计划任务的意思。crontab是类unix系统中的一种操作定时任...

  • crondtab 定时任务

    编辑定时任务 crontab -e 查看定时任务 crontab -l 删除定时任务 crontab -r 如:*...

  • linux crontab: 定时任务

    参考 crontab 定时任务 Linux之crontab定时任务

  • crond任务调度(定时任务调度)

    基本语法crontab [选项]选项-e : 编辑crontab定时任务-l : 查询crontab定时任务...

  • linux Crontab

    Linux Crontab:Linux中用于执行定时任务的工具crontab -e:编辑定时任务crontab -...

网友评论

      本文标题:定时操作 crontab at 以及恢复定时操作

      本文链接:https://www.haomeiwen.com/subject/pfxzittx.html