任务调度

Linux定时任务Crontab命令详解

。_饼干妹妹 提交于 2019-11-29 14:39:47
转:https://www.cnblogs.com/intval/p/5763929.html Linux定时任务Crontab命令详解 linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。 一、crond简介 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 Linux下的任务调度分为两类,系统任务调度和用户任务调度。 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。 /etc/crontab文件包括下面几行: cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=HOME=/ # run-parts 51 * * * * root

(转)高效线程池之无锁化实现(Linux C)

痞子三分冷 提交于 2019-11-29 11:29:45
本文链接: https://blog.csdn.net/xhjcehust/article/details/45844901 笔者之前照着通用写法练手写过一个小的线程池版本,最近几天复习了一下,发现大多数线程池实现都离不开锁的使用,如互斥量pthread_mutex*结合条件变量pthread_cond*。众所周知,锁的使用对于程序性能影响较大,虽然现有的pthread_mutex*在锁的申请与释放方面做了较大的优化,但仔细想想,线程池的实现是可以做到无锁化的,于是有了本文。 1.常见线程池实现原理 如上图所示,工作队列由主线程和工作者线程共享,主线程将任务放进工作队列,工作者线程从工作队列中取出任务执行。共享工作队列的操作需在互斥量的保护下安全进行,主线程将任务放进工作队列时若检测到当前待执行的工作数目小于工作者线程总数,则需使用条件变量唤醒可能处于等待状态的工作者线程。当然,还有其他地方可能也会使用到互斥量和条件变量,不再赘述。 2.无锁化线程池实现原理 为解决无锁化的问题,需要避免共享资源的竞争,因此将共享工作队列加以拆分成每工作线程一个工作队列的方式。对于主线程放入工作和工作线程取出任务的竞争问题,可以采取环形队列的方式避免。在解决了锁机制之后,就只剩下条件变量的问题了,条件变量本身即解决条件满足时的线程通信问题,而信号作为一种通信方式,可以代替之,其大体编程范式为:

Quartz初体验

给你一囗甜甜゛ 提交于 2019-11-29 09:52:37
quartz初体验 Quartz是一个开源作业调度框架。 看了一下官方的例子,一些简单的任务执行非常方便,和使用linux里的contab有点类似。 大致就是在你的Job接口实现类里面,添加一些逻辑到execute()方法。一旦你配置好Job实现类并设定好调度时间表, quartz就会去准备执行。 直接看代码吧 先解决依赖,它需要的依赖比较少。 <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.2.1</version> </dependency> 下面是主要代码: public class App { private static final int SECONDS = 5; //多少秒执行一次这个任务 public static void main(String[] args) throws SchedulerException { Scheduler scheduler =

crontab

雨燕双飞 提交于 2019-11-29 04:14:23
* 23 * * 1-6 root ls每周的周一到周六二十三点以root执行ls命令《Linux就该这样学》Linux计划任务入门详解 Linux操作系统定时任务系统 Cron 入门  cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:  /sbin/service crond start //启动服务  /sbin/service crond stop //关闭服务  /sbin/service crond restart //重启服务  /sbin/service crond reload //重新载入配置  你也可以将这个服务在系统启动的时候自动启动:  在/etc/rc.d/rc.local这个脚本的末尾加上:  /sbin/service crond start  现在Cron这个服务已经在进程里面了,我们就可以用这个服务了,Cron服务提供以下几种接口供大家使用:  1.直接用crontab命令编辑  cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:  crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数  crontab -l /

进程管理

末鹿安然 提交于 2019-11-29 02:19:28
一、进程的概念与分类 进程的的基本定义是 :在自身的虚拟地址空间运行的一个独立的程序,从操作系统的角度来看,所有在系统上运行的东西,都可以称为一个进程。 进程的分类:  系统进程: 可以执行内存资源分配和进程切换等管理工作;而且,该进程的运行不受用户的干预,即使是root用户也不能干预系统进程的运行。  用户进程: 通过执行用户程序、应用程序或内核之外的系统程序而产生的进程,此类进程可以在用户的控制下运行或关闭。 交互进程: 由一个shell终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行于前台,也可以运行在后台。 批处理进程: 该进程是一个进程集合,负责按顺序启动其他的进程。 守护进程: 守护进程是一直运行的一种进程,经常在linux系统启动时启动,在系统关闭时终止。例如httpd进程,一直处于运行状态,等待用户的访问。还有经常用的crond进程,这个进程类似与windows的计划任务,可以周期性的执行用户设定的某些任务。 二、进程的监控与管理 在linux系统中,进程ID(用PID表示)是区分不同进程的唯一标识,它们的大小是有限制的,最大ID为32768,用UID和GID分别表示启动这个进程的用户和用户组。所有的进程都是PID为1的init进程(centos7.x版本是systemd进程)的后代。内核在系统启动的最后阶段启动init进程,因而

任务调度框架Quartz实现的跑批程序(二)

我的梦境 提交于 2019-11-29 00:26:28
J2EE中用的最多的任务调度框架应该就是Quartz了,最近比较清闲,就来详细了解一下Quartz;用这个博客来记录下学习心得,如有错误之处,还请各位大神指点。 1.关键接口 Scheduler,任务调度的API;它可以用来启动或者终止任务等。 Job,具体的任务接口;通过实现它,来让任务调度执行具体的任务。 JobDetail ,用来定义Job的实例。 Trigger ,触发器用来定义给定的Job应该如何执行。 JobBuilder ,用来定义/构建Jobdetail实例。 TriggerBuilder ,用来定义/构建Trigger实例。 2.简单例子 下面是一个简单的例子,创建一个简单的任务调度。 创建一个Job,名为HelloJob: public class HelloJob implements Job{ @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { System.out.println("hello job, "+ DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")); } } 实现Job接口中的execute方法,这个方法中是我们需要任务调度执行的具体内容,这里我们只简单打印

Spring与Quartz实现定期任务

那年仲夏 提交于 2019-11-28 23:03:25
日志说明: 1、不对Spring的基础环境配置做详细说明; 2、只是记录一下暂时自己从网上及参考手册上查找到的经测试有用的资料 3、记录一下,方便以后自己或需要的朋友使用,后续有新的有用资料会及时更新 4、可查看Spring4.0参考手册:Part Ⅵ.Integration的27.6Using the Quartz Scheduler 5、测试时用的却是Spring3.1.3 注意: 引用Quartz时最好使用1.8.5 (目前最新的是2.2.1,此版本与Spring3.1.1暂不兼容,实测时启动项目会报错,具体什么错误给忘了) <!-- 任务调度测试实现一 : 自定义的任务对象com.bocloud.equipment.test.ExampleJob 必须继承QuartzJobBean类,实现抽象方法executeInternal 每次执行任务时,都会新创建一个任务对象. --> <bean id="myJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean"> <!-- 属性jobClass不能通过ref来指定为exampleJob对象,该属性接收的是Class类型的参数 进行任务调度时,每次都是一个新的jobClass对象去执行executeInternal方法 --> <property

Linux任务调度(8)

大憨熊 提交于 2019-11-28 14:42:52
crond任务调度:   是指系统在某个时间执行特定的命令或程序。   分类:1、系统工作,有些重要的工作必须周而复始地执行,如病毒扫描等;2、个别用户工作,个别用户可能希望执行某些程序,如mysql数据库备份 基本语法:   crontab [选项]   [-e] 编辑crontab定时任务   [-l] 查询crontab任务   [-r] 删除当前用户所有的crontab任务 案例:/etc/crontab      */1 * * * * ls -l /etc >> /tmp/to.txt : 没分钟向to.txt中添加内容   参数细节说明:     * 表示任何时间,比如第一个*代表一个小时总每分钟都执行一次     , 代表不连续的时间,如"0 8,12,16 * * *"代表每天8点0分、12点0分、16点0分执行一次命令     - 代表连续的时间范围,如"0 5 * * 1-6"代表每周一至周六的凌晨5点0分执行命令     */n 代表每隔多久执行一次。如上述示例中代表每隔一分钟执行一次命令 通过文件脚本进行设置任务:   1、编写shell脚本,如vim /home/mytask.sh     date >> /tmp/mydate   2、给mytask.sh一个可执行的权限     chmod 744 /home/mytask.sh   3

Centos7——11.CROND任务调度

吃可爱长大的小学妹 提交于 2019-11-28 06:26:05
目录 1. 原理示意图 2. 概述 3. 基本语法 4. 快速入门 4.1 任务的要求 4.2 步骤如下 4.3 参数细节说明 5. 任务调度的几个应用实例 5.1 案例1:每隔 1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中 5.2 案例 2:每隔 1 分钟, 将当前日期和日历都追加到 /home/mycal 文件中 5.3 案例 3:每天凌晨 2:00 将 mysql 数据库 testdb ,备份到文件mydb.bak中 6. crond 相关指令 1. 原理示意图 图1 图2 crontab 进行 定时任务的设置。 2. 概述 任务调度:是指系统在某个时间执行的特定的命令或程序。 任务调度分类: 1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等 2.个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。 3. 基本语法 crontab [选项] 常用选项 图3 4. 快速入门 4.1 任务的要求 设置任务调度文件:/etc/crontab 设置个人任务调度。执行 crontab –e 命令。 接着输入任务到调度文件 如: /1 * * * ls –l /etc/ > /tmp/to.txt 意思说每小时的每分钟执行 ls –l /etc/ > /tmp/to.txt 命令 4.2 步骤如下 1) cron -e 2)

linux(六)__进程与任务控制

偶尔善良 提交于 2019-11-28 05:43:00
一、程序、进程、线程 1.程序是一个普通文件,是一系列指令和数据的集合,是一个静态的实体,是程序员写好之后存储于外设之上的代码。它是"死"的,而进程和程序都是"活"的。 2.进程是程序的执行实例,即运行中的程序,同时也是程序的一个副本;程序是放置于磁盘的,而程序是位于内存中的。每一个进程都分配一个 ID号。 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如WWW服务器。 3.线程是比进程更小的执行单元,一个进程至少包括一个线程。一个进程要想同时在多颗CPU上运行,必须得分成互不影响的多个执行流,这些执行流就是线程。 进程有独立的内存地址空间,线程没有 线程不能独立存在,它是由进程创建的。(在linux下是fork,在java下是Thread) 二、进程的分类 按照进程的功能和运行的程序分类,进程可划分为两大类:  系统进程:可以执行内存资源分配和进程切换等管理工作;而且,该进程的运行不受用户的干预,即使是root用户也不能干预系统进程的运行。  用户进程:通过执行用户程序、应用程序或内核之外的系统程序而产生的进程,此类进程可以在用户的控制下运行或关闭。 针对用户进程,又可以分为交互进程、批处理进程和守护进程三类。  交互进程:由一个shell终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行于前台,也可以运行在后台。  批处理进程