定时_定时器 - CSDN
  • 定时器(脚本定时执行)

    千次阅读 2016-11-13 23:03:20
    在学习大数据的时候,有很多命令都是用手动来执行的,这在实际项目中显然是不合适的,实际项目中是需要用定时器来执行相应的脚本的,关于定时器的知识点如下所示。 基本格式 :  * * * * * command  ...

          在学习大数据的时候,有很多命令都是用手动来执行的,这在实际项目中显然是不合适的,实际项目中是需要用定时器来执行相应的脚本的,关于定时器的知识点如下所示。

    基本格式 : 

    *  *  *  *  *  command 
    分  时  日  月  周  命令 
    第1列表示分钟1~59 每分钟用*或者 */1表示 
    第2列表示小时1~23(0表示0点) 
    第3列表示日期1~31 
    第4列表示月份1~12 
    第5列标识号星期0~6(0表示星期天) 
    第6列要运行的命令 
    crontab文件的一些例子: 
    30 21 * * * /usr/local/etc/rc.d/lighttpd restart 
    上面的例子表示每晚的21:30重启apache。 
    45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 
    上面的例子表示每月1、10、22日的4 : 45重启apache。 
    10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart 
    上面的例子表示每周六、周日的1 : 10重启apache。 
    0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart 
    上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。 
    0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart 
    上面的例子表示每星期六的11 : 00 pm重启apache。 
    * */1 * * * /usr/local/etc/rc.d/lighttpd restart 
    每一小时重启apache 
    * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart 
    晚上11点到早上7点之间,每隔一小时重启apache 
    0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart 
    每月的4号与每周一到周三的11点重启apache 
    0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart 
    一月一号的4点重启apache 
    名称 : crontab 
    使用权限 : 所有使用者 
    使用方式 : 
    crontab file [-u user]-用指定的文件替代目前的crontab。 
    crontab-[-u user]-用标准输入替代目前的crontab. 
    crontab-1[user]-列出用户目前的crontab. 
    crontab-e[user]-编辑用户目前的crontab. 
    crontab-d[user]-删除用户目前的crontab. 
    crontab-c dir- 指定crontab的目录。 
    crontab文件的格式:M H D m d cmd. 
    M: 分钟(0-59)。 
    H:小时(0-23)。 
    D:天(1-31)。 
    m: 月(1-12)。 
    d: 一星期内的天(0~6,0为星期天)。 
    cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量 
    说明 : 
    crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 
    user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设 
    定自己的时程表。 
    参数 : 
    crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数 
    来指定使用那个文字编辑器(比如说 setenv VISUAL joe) 
    crontab -r : 删除目前的时程表 
    crontab -l : 列出目前的时程表 
    crontab file [-u user]-用指定的文件替代目前的crontab。 
    时程表的格式如下 : 
    f1 f2 f3 f4 f5 program 
    其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执 
    行的程序。 
    当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推 
    当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推 
    当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推 
    当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推 
    使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。 
    例子 : 
    #每天早上7点执行一次 /bin/ls : 
    0 7 * * * /bin/ls 
    在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup : 
    0 6-12/3 * 12 * /usr/bin/backup 
    周一到周五每天下午 5:00 寄一封信给 alex@domain.name : 
    0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata 
    每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha" 
    20 0-23/2 * * * echo "haha" 
    注意 : 
    当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之 
    后加上 > /dev/null 2>&1 即可 
    例子2 : 
    #每天早上6点10分 
    10 6 * * * date 
    #每两个小时 
    0 */2 * * * date 
    #晚上11点到早上8点之间每两个小时,早上8点 
    0 23-7/2,8 * * * date 
    #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 
    0 11 4 * mon-wed date 
    #1月份日早上4点 
    0 4 1 jan * date 
    范例 
    $crontab -l 列出用户目前的crontab.
    展开全文
  • 原文地址:https://www.sunzhongwei.com/laravel-schedule-a-task-that-is-much-more-convenient-than-linux-system-crontab 转载了原作者的文章并结合自己的理解有所修改。 Ubuntu 下,命令行输入 ...

    原文地址:https://www.sunzhongwei.com/laravel-schedule-a-task-that-is-much-more-convenient-than-linux-system-crontab

     

    转载了原作者的文章并结合自己的理解有所修改。

     

    Ubuntu 下,命令行输入  

    crontab -e
    

     打开了一个文件  然后在最后加入  这技术定时器,

    * * * * * php(你服务器上面php所在的位置 你的php位置/bin/php) /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
     

     

    然后我们重启了服务 

     service crond restart

     

    下面是在laravel文件下的编写

    app/Console/Kernel.php【上面的定时好了之后我们就测试了一下定时向日志中添加语句,并且是每分钟执行一次】  

    protected function schedule(Schedule $schedule)
    {
            $schedule->call(function () {
                Log::info('ccc');
            })->everyMinute();
    }

    示例,自动处理过期订单

    Order.php

        public static function handle_expired_order() {
            $orders = self::where('status', self::STATUS_NEW)
                ->whereRaw("created_at < NOW() - INTERVAL 1 DAY")
                ->get();
    
            foreach ($orders as $order) {
                $order->status = self::STATUS_EXPIRED;
                $order->save();
            }
        }
    

    app/Console/Kernel.php

    protected function schedule(Schedule $schedule)
        {
            $schedule->call(function () {
                Order::handle_expired_order();
            })->hourly();
        }
    

    每小时执行

    ->hourly();
    

    本地调试的时候,最好改成

    ->everyMinute();
    

    方便查看效果。

     

    当存在两个定时任务时需要 分开写  

    protected function schedule(Schedule $schedule){     
    
            第一个定时任务 
            $schedule->call(function () { Log::info('ccc');    })      
     
    
            第二个定时任务
    
            $schedule->call(function () { Log::info('哎哎哎');  }) 
    })->everyMinute();}

     

    展开全文
  • 放在启动类里面,如果不加 定时无法正常使用 @Configuration 在需要定时任务的 控制器写注解 @Scheduled 在方法上写注解,就成为定时任务了 有两种写法 @Scheduled(cron = "0 0 0 * * ? ") //定时任务的方法用的...

    需要三个注解

    @EnableScheduling

    放在启动类里面,如果不加 定时无法正常使用
    在这里插入图片描述

    @Configuration

    在需要定时任务的 控制器写注解
    在这里插入图片描述

    @Scheduled

    在这里插入图片描述
    在方法上写注解,就成为定时任务了
    有两种写法

    @Scheduled(cron = "0 0 0 * * ? ") //定时任务的方法用的注解(秒 分 时 日 星期几 年),每天的0点0分执行
    @Scheduled(fixedDelay = 60000 * 5)// 每5m执行一次
    
    
    
    展开全文
  • JAVA:定时器的三种方法(详细注解)

    万次阅读 多人点赞 2018-10-14 10:31:06
     创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果,代码如下: public class Task1 { public static void main(String[] args) { // run in a second // 每一秒钟执行...

    第一种:

            创建一个thread,然后让它在while循环里一直运行着,通过sleep方法来达到定时任务的效果,代码如下:

    public class Task1 {
    	public static void main(String[] args) {
    		// run in a second
    		// 每一秒钟执行一次
    		final long timeInterval = 1000;
    		Runnable runnable = new Runnable() {
    			public void run() {
    				while (true) {
    					// ------- code for task to run
    					// ------- 要运行的任务代码
    					System.out.println("Hello, stranger");
    					// ------- ends here
    					try {
    						// sleep():同步延迟数据,并且会阻塞线程
    						Thread.sleep(timeInterval);
    					} catch (InterruptedException e) {
    						e.printStackTrace();
    					}
    				}
    			}
    		};
    		//创建定时器
    		Thread thread = new Thread(runnable);
    		//开始执行
    		thread.start();
    	}
    }

    第二种:

            启动和去取消任务时可以控制,可以指定你想要的delay(开始执行的等待时间)时间,在实现时,Timer类可以调度任务,TimerTask则是通过在run()方法里实现具体任务。 Timer实例可以调度多任务,它是线程安全的。 当Timer的构造器被调用时,它创建了一个线程,这个线程可以用来调度任务。代码如下:

    // 调用的工具
    import java.util.Timer;
    import java.util.TimerTask;
    
    public class Task2 {
    	public static void main(String[] args) {
    		/**
    		 * Timer:是一个定时器工具,用来执行指定任务
    		 * TimerTask:是一个抽象类,他的子类可以代表一个被Timer计划的任务
    		 */
    		TimerTask task = new TimerTask() {
    			@Override
    			public void run() {
    				// task to run goes here
    				// 执行的输出的内容
    				System.out.println("Hello, stranger");
    			}
    		};
    		Timer timer = new Timer();
    		// 定义开始等待时间  --- 等待 5 秒
    		// 1000ms = 1s
    		long delay = 5000;
    		// 定义每次执行的间隔时间
    		long intevalPeriod = 5 * 1000;
    		// schedules the task to be run in an interval
    		// 安排任务在一段时间内运行
    		timer.scheduleAtFixedRate(task, delay, intevalPeriod);
    	} // end of main
    }

    第三种:       

            相比于上两个方法,它有以下好处:
            1.相比于Timer的单线程,它是通过线程池的方式来执行任务的 
            2.可以很灵活的去设定第一次执行任务delay时间
            3.提供了良好的约定,以便设定执行的时间间隔

    //调用的工具
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.TimeUnit;
    
    public class Task3 {
    	public static void main(String[] args) {
    		/**
    		 * Runnable:实现了Runnable接口,jdk就知道这个类是一个线程  
    		 */
    		Runnable runnable = new Runnable() {
    			//创建 run 方法
    			public void run() {
    				// task to run goes here
    				System.out.println("Hello, stranger");
    			}
    		};
    		// ScheduledExecutorService:是从Java SE5的java.util.concurrent里,
    		// 做为并发工具类被引进的,这是最理想的定时任务实现方式。
    		ScheduledExecutorService service = Executors
    				.newSingleThreadScheduledExecutor();
    		// 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
    		// 10:秒   5:秒
    		// 第一次执行的时间为10秒,然后每隔五秒执行一次
    		service.scheduleAtFixedRate(runnable, 10, 5, TimeUnit.SECONDS);
    	}
    }

    因为本身自己也是小白,如果有错误的地方,请及时留言指正,谢谢   【一起学习,一起进步,加油!!】

    展开全文
  • windows 自动定时执行任务的几种实现方法 Windows自动定时执行任务,常见的方法有三种:Windows 任务计划程序Windows ServiceSQL Agent 的 Job 这三种方法大多数人都用过,我在这里只做一个比较简单的介绍和小结,...
  • 关于stm32定时器定时周期计算

    万次阅读 2018-07-23 18:18:24
    1.TIMx(1-8),在库设置默认的情况下,都是72M的时钟; 名为TIMx的有八个,其中TIM1和TIM8挂在APB2总线上,而TIM2-TIM7则挂在 APB1总线上。其中TIM1&amp;TIM8称为高级控制定时器(advanced control timer)....
  • win10定时任务

    千次阅读 2018-08-10 18:38:32
    前几天接收到一个任务,定时发送邮件给甲方爸爸。用python实现邮件发送已经写过一篇不再重复,此篇补充定时任务。 由于本宝宝系统是win10,没装Linux,发邮件给甲方爸爸只是短暂任务,so并没有打算用Linux,win也是...
  • SpringBoot-定时任务-集群篇

    万次阅读 2019-11-06 17:40:44
    前面一篇文章(SpringBoot-定时任务)中介绍了如何用SpringBoot框架中的注解方式来实现定时任务,这种方式的好处是不使用第三方的依赖,仅凭几个方便的注解,即可编写一个简单的定时任务处理。 实际开发中为了满足复杂...
  • SpringQuartz定时任务的cron表达式书写

    万次阅读 2019-06-18 12:01:27
    SpringQuartz定时任务的使用,要配置这个定时任务什么时候执行,周期是多少,周期内执行多少次,这个都是cron表达式来控制的,下面详解一下这个cron表达式。 一、先来举些例子 【1】0 0 10,14,16 * * ? 每天上午10...
  • 现在的web项目中很多场景下都有要执行定时任务的需求,比如说每隔5秒将redis中的统计当天注册用户数持久化到数据库。现在项目中实现这一功能,一般用quartz这一工具框架,但是这个对于一个新手来说比较麻烦,各种查...
  • github:https://github.com/jiasion/eslog wechat:minghui-666 利用redisson实现多实例抢占定时任务 pom.xml <dependency> <groupId>org.redisson</groupId> <artifactId>r...
  • 使用spring @Scheduled注解执行定时任务、

    万次阅读 多人点赞 2018-04-20 10:52:48
    以前框架使用quartz框架执行定时调度问题、老大说这配置太麻烦、每个调度都需要多加在spring的配置中、能不能减少配置的量从而提高开发效率、最近看了看spring的 scheduled的使用注解的方式进行调度、感觉很方便、...
  • SpringBoot重点详解--使用数据库配置Quartz定时任务

    万次阅读 多人点赞 2019-04-01 14:45:04
    创建定时任务实体类 任务实体持久化 创建调度器工厂 TaskUtils工具类 创建定时任务服务类 创建定时任务初始化服务类 创建定时任务实现类 在实际项目开发过程中,定时任务几乎是必不可少的。作为Java程序员用...
  • SpringBoot几种定时任务的实现方式

    万次阅读 多人点赞 2018-02-01 09:39:16
    原文地址:SpringBoot几种定时任务的实现方式 定时任务实现的几种方式: Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行...
  • 最近项目需要用到定时任务,需要完成一个定时功能。经过了解,项目中目前实现定时任务,一般有三种选择,一是用Java自带的timer类。稍微看了一下,可以实现大部分的指定频率的任务的调度(timer.schedule()),也...
  • java定时任务实现的几种方式

    万次阅读 多人点赞 2019-08-12 09:59:39
    摘要: 在开发测试工具的应用后台,经常听到同事说要做个定时任务把做日志处理,或者数据清理,包括做些复杂的业务计算逻辑,在选择定时任务的时候,怎么能够快速实现,并且选择一种更适合自己的方式呢?我这里把...
  • 最近在项目中一直使用定时任务完成一些业务逻辑,比如天气接口的数据获取,定时发送短信,邮件。以及商城中每天用户的限额,定时自动收货等等。定时器在项目中是我们常常会使用到的一个手段,今天我们就来看下在...
  • Java 定时任务的几种实现方式

    万次阅读 多人点赞 2017-06-03 22:04:51
    JAVA实现定时任务的几种方式@(JAVA)[spring|quartz|定时器]  近期项目开发中需要动态的添加定时任务,比如在某个活动结束时,自动生成获奖名单,导出excel等,此类任务由于活动时间是动态的,不能把定时任务配置在...
  • ThinkPHP实现定时执行任务的两种方法

    万次阅读 多人点赞 2016-09-22 18:19:41
    在平常的项目中我们总是会遇到需要将某个方法任务定时执行的问题,定时执行方法任务如果我们拥有服务器的权限,我们可以直接在服务器设置定时任务,例如在Windows的任务计划程序中进行设置,在Linux中编写脚本进行...
1 2 3 4 5 ... 20
收藏数 509,518
精华内容 203,807
关键字:

定时